{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>7.465900e+04</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.0</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "      <td>74659.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>1.212915</td>\n",
       "      <td>1.544663</td>\n",
       "      <td>3.749033e+03</td>\n",
       "      <td>1658.561183</td>\n",
       "      <td>1631.330597</td>\n",
       "      <td>-0.331748</td>\n",
       "      <td>2.757578</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.015738</td>\n",
       "      <td>15.151623</td>\n",
       "      <td>...</td>\n",
       "      <td>0.001058</td>\n",
       "      <td>0.003094</td>\n",
       "      <td>0.000442</td>\n",
       "      <td>0.188243</td>\n",
       "      <td>0.008653</td>\n",
       "      <td>0.000388</td>\n",
       "      <td>0.027994</td>\n",
       "      <td>0.002156</td>\n",
       "      <td>0.001085</td>\n",
       "      <td>0.000884</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.649820</td>\n",
       "      <td>1.107014</td>\n",
       "      <td>9.713092e+03</td>\n",
       "      <td>4771.933806</td>\n",
       "      <td>4482.208640</td>\n",
       "      <td>1.026154</td>\n",
       "      <td>1.497497</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.825815</td>\n",
       "      <td>8.245418</td>\n",
       "      <td>...</td>\n",
       "      <td>0.032922</td>\n",
       "      <td>0.055539</td>\n",
       "      <td>0.021020</td>\n",
       "      <td>0.390908</td>\n",
       "      <td>0.097548</td>\n",
       "      <td>0.019705</td>\n",
       "      <td>0.164957</td>\n",
       "      <td>0.046388</td>\n",
       "      <td>0.032921</td>\n",
       "      <td>0.029720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000e+00</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>-6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.495000e+03</td>\n",
       "      <td>1220.000000</td>\n",
       "      <td>1065.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.150000e+03</td>\n",
       "      <td>1500.000000</td>\n",
       "      <td>1377.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>4.100000e+03</td>\n",
       "      <td>1850.000000</td>\n",
       "      <td>1950.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>112.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1.675000e+06</td>\n",
       "      <td>837500.000000</td>\n",
       "      <td>558333.333333</td>\n",
       "      <td>109.000000</td>\n",
       "      <td>115.000000</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          bathrooms      bedrooms         price  price_bathrooms  \\\n",
       "count  74659.000000  74659.000000  7.465900e+04     74659.000000   \n",
       "mean       1.212915      1.544663  3.749033e+03      1658.561183   \n",
       "std        0.649820      1.107014  9.713092e+03      4771.933806   \n",
       "min        0.000000      0.000000  1.000000e+00         0.500000   \n",
       "25%        1.000000      1.000000  2.495000e+03      1220.000000   \n",
       "50%        1.000000      1.000000  3.150000e+03      1500.000000   \n",
       "75%        1.000000      2.000000  4.100000e+03      1850.000000   \n",
       "max      112.000000      7.000000  1.675000e+06    837500.000000   \n",
       "\n",
       "       price_bedrooms     room_diff      room_num     Year         Month  \\\n",
       "count    74659.000000  74659.000000  74659.000000  74659.0  74659.000000   \n",
       "mean      1631.330597     -0.331748      2.757578   2016.0      5.015738   \n",
       "std       4482.208640      1.026154      1.497497      0.0      0.825815   \n",
       "min          0.333333     -6.000000      0.000000   2016.0      4.000000   \n",
       "25%       1065.000000     -1.000000      2.000000   2016.0      4.000000   \n",
       "50%       1377.500000      0.000000      2.000000   2016.0      5.000000   \n",
       "75%       1950.000000      0.000000      4.000000   2016.0      6.000000   \n",
       "max     558333.333333    109.000000    115.000000   2016.0      6.000000   \n",
       "\n",
       "                Day      ...            virtual          walk         walls  \\\n",
       "count  74659.000000      ...       74659.000000  74659.000000  74659.000000   \n",
       "mean      15.151623      ...           0.001058      0.003094      0.000442   \n",
       "std        8.245418      ...           0.032922      0.055539      0.021020   \n",
       "min        1.000000      ...           0.000000      0.000000      0.000000   \n",
       "25%        8.000000      ...           0.000000      0.000000      0.000000   \n",
       "50%       15.000000      ...           0.000000      0.000000      0.000000   \n",
       "75%       22.000000      ...           0.000000      0.000000      0.000000   \n",
       "max       31.000000      ...           2.000000      1.000000      1.000000   \n",
       "\n",
       "                war        washer         water    wheelchair          wifi  \\\n",
       "count  74659.000000  74659.000000  74659.000000  74659.000000  74659.000000   \n",
       "mean       0.188243      0.008653      0.000388      0.027994      0.002156   \n",
       "std        0.390908      0.097548      0.019705      0.164957      0.046388   \n",
       "min        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "25%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "50%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "75%        0.000000      0.000000      0.000000      0.000000      0.000000   \n",
       "max        1.000000      2.000000      1.000000      1.000000      1.000000   \n",
       "\n",
       "            windows          work  \n",
       "count  74659.000000  74659.000000  \n",
       "mean       0.001085      0.000884  \n",
       "std        0.032921      0.029720  \n",
       "min        0.000000      0.000000  \n",
       "25%        0.000000      0.000000  \n",
       "50%        0.000000      0.000000  \n",
       "75%        0.000000      0.000000  \n",
       "max        1.000000      1.000000  \n",
       "\n",
       "[8 rows x 227 columns]"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "import pandas as pd \n",
    "train = pd.read_csv(\"RentListingInquries_FE_train.csv\")\n",
    "test = pd.read_csv(\"RentListingInquries_FE_test.csv\")\n",
    "train.describe()\n",
    "test.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa72b88c90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "y_data = train['interest_level']\n",
    "X_data = train.drop('interest_level',axis=1)\n",
    "X_train, X_test,y_train,y_test = train_test_split(X_data,y_data,test_size=0.8,random_state=1)\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "sns.countplot(y_train);\n",
    "plt.xlabel('interest_level');\n",
    "plt.ylabel('num');\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 样本分类数量区别不是特别大，不做调整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#初步确定树数目的范围\n",
    "def modelfit(alg, X_train, y_train, cv_folds=None, early_stopping_rounds=10):\n",
    "    xgb_param = alg.get_xgb_params()  \n",
    "    #直接调用xgboost，而非sklarn的wrapper类\n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "    xgb_param['num_class'] = 9   \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "  \n",
    "    cvresult.to_csv('1_nestimators.csv', index_label = 'n_estimators')\n",
    "    \n",
    "    #最佳参数n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "    \n",
    "    # 采用交叉验证得到的最佳参数n_estimators，训练模型\n",
    "    alg.set_params(n_estimators = n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import StratifiedKFold\n",
    "kfold = StratifiedKFold(n_splits=4, shuffle=True, random_state=1)\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob', \n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
      "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
      "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
      "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
      "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
      "       subsample=0.3)\n",
      "              test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "n_estimators                                                               \n",
      "0                       1.041914           0.001421             1.039582   \n",
      "1                       0.994359           0.001183             0.989739   \n",
      "2                       0.953636           0.001112             0.946610   \n",
      "3                       0.917503           0.001581             0.908169   \n",
      "4                       0.887282           0.001209             0.874775   \n",
      "5                       0.860305           0.000809             0.845664   \n",
      "6                       0.837089           0.001545             0.820407   \n",
      "7                       0.816710           0.001267             0.797823   \n",
      "8                       0.798919           0.001217             0.778124   \n",
      "9                       0.782905           0.001446             0.760331   \n",
      "10                      0.768954           0.001775             0.744218   \n",
      "11                      0.756367           0.001754             0.729725   \n",
      "12                      0.745186           0.002055             0.716818   \n",
      "13                      0.735508           0.001953             0.704933   \n",
      "14                      0.726608           0.001999             0.693988   \n",
      "15                      0.718833           0.001920             0.684288   \n",
      "16                      0.712307           0.001740             0.675387   \n",
      "17                      0.706158           0.001649             0.667318   \n",
      "18                      0.700588           0.001439             0.659584   \n",
      "19                      0.695475           0.002019             0.652461   \n",
      "20                      0.690448           0.001663             0.645840   \n",
      "21                      0.685745           0.001965             0.639411   \n",
      "22                      0.682072           0.002102             0.633904   \n",
      "23                      0.678254           0.002401             0.628551   \n",
      "24                      0.674972           0.002616             0.623756   \n",
      "25                      0.672333           0.002787             0.619146   \n",
      "26                      0.669584           0.003056             0.614679   \n",
      "27                      0.667265           0.003122             0.610771   \n",
      "28                      0.664776           0.003084             0.606783   \n",
      "29                      0.662476           0.002996             0.602779   \n",
      "...                          ...                ...                  ...   \n",
      "73                      0.634010           0.005424             0.507062   \n",
      "74                      0.634125           0.005329             0.505128   \n",
      "75                      0.634026           0.005605             0.503937   \n",
      "76                      0.634062           0.005652             0.502494   \n",
      "77                      0.633861           0.005699             0.500898   \n",
      "78                      0.634164           0.005372             0.499573   \n",
      "79                      0.633915           0.005638             0.498151   \n",
      "80                      0.634056           0.005467             0.496591   \n",
      "81                      0.633702           0.005123             0.494923   \n",
      "82                      0.633401           0.004970             0.493344   \n",
      "83                      0.633310           0.005573             0.491808   \n",
      "84                      0.633346           0.005557             0.490195   \n",
      "85                      0.633289           0.005612             0.488790   \n",
      "86                      0.633197           0.005694             0.487429   \n",
      "87                      0.633146           0.006097             0.485924   \n",
      "88                      0.633176           0.006372             0.484412   \n",
      "89                      0.633174           0.006077             0.482907   \n",
      "90                      0.633164           0.006233             0.481660   \n",
      "91                      0.633010           0.005893             0.480378   \n",
      "92                      0.633095           0.005924             0.479088   \n",
      "93                      0.633352           0.006347             0.477561   \n",
      "94                      0.633155           0.006012             0.475763   \n",
      "95                      0.633078           0.005924             0.474486   \n",
      "96                      0.632958           0.005972             0.473153   \n",
      "97                      0.632878           0.006026             0.471793   \n",
      "98                      0.632805           0.006172             0.470599   \n",
      "99                      0.632859           0.006557             0.469162   \n",
      "100                     0.632772           0.006328             0.467893   \n",
      "101                     0.632597           0.006499             0.466751   \n",
      "102                     0.632452           0.006701             0.465576   \n",
      "\n",
      "              train-mlogloss-std  \n",
      "n_estimators                      \n",
      "0                       0.001126  \n",
      "1                       0.001353  \n",
      "2                       0.001251  \n",
      "3                       0.001333  \n",
      "4                       0.000986  \n",
      "5                       0.000407  \n",
      "6                       0.000814  \n",
      "7                       0.000823  \n",
      "8                       0.001028  \n",
      "9                       0.001357  \n",
      "10                      0.001958  \n",
      "11                      0.002020  \n",
      "12                      0.001855  \n",
      "13                      0.001773  \n",
      "14                      0.001709  \n",
      "15                      0.001346  \n",
      "16                      0.001043  \n",
      "17                      0.000815  \n",
      "18                      0.001009  \n",
      "19                      0.000651  \n",
      "20                      0.000964  \n",
      "21                      0.000935  \n",
      "22                      0.000964  \n",
      "23                      0.000602  \n",
      "24                      0.000502  \n",
      "25                      0.000659  \n",
      "26                      0.000809  \n",
      "27                      0.000760  \n",
      "28                      0.000786  \n",
      "29                      0.000619  \n",
      "...                          ...  \n",
      "73                      0.002862  \n",
      "74                      0.003169  \n",
      "75                      0.003077  \n",
      "76                      0.003065  \n",
      "77                      0.003181  \n",
      "78                      0.003143  \n",
      "79                      0.003056  \n",
      "80                      0.003001  \n",
      "81                      0.003180  \n",
      "82                      0.003318  \n",
      "83                      0.003067  \n",
      "84                      0.003163  \n",
      "85                      0.003007  \n",
      "86                      0.002601  \n",
      "87                      0.002761  \n",
      "88                      0.002943  \n",
      "89                      0.003038  \n",
      "90                      0.002907  \n",
      "91                      0.002956  \n",
      "92                      0.002788  \n",
      "93                      0.002759  \n",
      "94                      0.002638  \n",
      "95                      0.002775  \n",
      "96                      0.002759  \n",
      "97                      0.002805  \n",
      "98                      0.002749  \n",
      "99                      0.002893  \n",
      "100                     0.003069  \n",
      "101                     0.003070  \n",
      "102                     0.003121  \n",
      "\n",
      "[103 rows x 4 columns]\n"
     ]
    }
   ],
   "source": [
    "print xgb1\n",
    "print cvresult"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa72e77a10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "        \n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult.shape[0])\n",
    "        \n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators4_1.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nteoRtekAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa6ead8f10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult2 = cvresult.iloc[20:]\n",
    "# plot\n",
    "test_means = cvresult2['test-mlogloss-mean']\n",
    "test_stds = cvresult2['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult2['train-mlogloss-mean']\n",
    "train_stds = cvresult2['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(20,cvresult2.shape[0]+20)\n",
    "fig = plt.figure(figsize=(10, 10), dpi=100)\n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators_detail.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 在103个estimators，测试性能在连续１０次添加estimators后不在提升，因此最佳estimators初定为１０３，此时最小logloss为0.632452 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.63307, std: 0.00345, params: {'max_depth': 3, 'min_child_weight': 1}, mean: -0.63228, std: 0.00391, params: {'max_depth': 3, 'min_child_weight': 3}, mean: -0.63410, std: 0.00470, params: {'max_depth': 3, 'min_child_weight': 5}, mean: -0.62579, std: 0.00726, params: {'max_depth': 5, 'min_child_weight': 1}, mean: -0.62709, std: 0.00609, params: {'max_depth': 5, 'min_child_weight': 3}, mean: -0.62779, std: 0.00584, params: {'max_depth': 5, 'min_child_weight': 5}, mean: -0.63642, std: 0.00254, params: {'max_depth': 7, 'min_child_weight': 1}, mean: -0.63061, std: 0.00791, params: {'max_depth': 7, 'min_child_weight': 3}, mean: -0.63157, std: 0.00559, params: {'max_depth': 7, 'min_child_weight': 5}, mean: -0.65131, std: 0.00858, params: {'max_depth': 9, 'min_child_weight': 1}, mean: -0.63994, std: 0.00727, params: {'max_depth': 9, 'min_child_weight': 3}, mean: -0.63857, std: 0.00402, params: {'max_depth': 9, 'min_child_weight': 5}]\n",
      "best_params-------------->\n",
      "{'max_depth': 5, 'min_child_weight': 1}\n",
      "best_score--------------->\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'GridSearchCV' object has no attribute 'best_score'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0mTraceback (most recent call last)",
      "\u001b[0;32m<ipython-input-40-ebe74abc159b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     17\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mgsearch2_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbest_params_\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     18\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0;34m\"best_score--------------->\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0;32mprint\u001b[0m \u001b[0mgsearch2_1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbest_score\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mAttributeError\u001b[0m: 'GridSearchCV' object has no attribute 'best_score'"
     ]
    }
   ],
   "source": [
    "#max_depth 和 min_child_weight 参数调整\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "max_depth = range(3,10,2)\n",
    "min_child_weight = range(1,6,2)\n",
    "param_test2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "xgb2=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch2_1 = GridSearchCV(xgb2, param_grid = param_test2_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_1.fit(X_train , y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.63307, std: 0.00345, params: {'max_depth': 3, 'min_child_weight': 1}, mean: -0.63228, std: 0.00391, params: {'max_depth': 3, 'min_child_weight': 3}, mean: -0.63410, std: 0.00470, params: {'max_depth': 3, 'min_child_weight': 5}, mean: -0.62579, std: 0.00726, params: {'max_depth': 5, 'min_child_weight': 1}, mean: -0.62709, std: 0.00609, params: {'max_depth': 5, 'min_child_weight': 3}, mean: -0.62779, std: 0.00584, params: {'max_depth': 5, 'min_child_weight': 5}, mean: -0.63642, std: 0.00254, params: {'max_depth': 7, 'min_child_weight': 1}, mean: -0.63061, std: 0.00791, params: {'max_depth': 7, 'min_child_weight': 3}, mean: -0.63157, std: 0.00559, params: {'max_depth': 7, 'min_child_weight': 5}, mean: -0.65131, std: 0.00858, params: {'max_depth': 9, 'min_child_weight': 1}, mean: -0.63994, std: 0.00727, params: {'max_depth': 9, 'min_child_weight': 3}, mean: -0.63857, std: 0.00402, params: {'max_depth': 9, 'min_child_weight': 5}]\n",
      "best_params-------------->\n",
      "{'max_depth': 5, 'min_child_weight': 1}\n",
      "best_score--------------->\n",
      "-0.6257902772229056\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "print \"grid_scores-------------->\"\n",
    "print gsearch2_1.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch2_1.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch2_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nz9Xp82tigaQVijnFk26ly/QXKC8oZOekX5J1++0U79oV7qIZ02IDSX3UJY38KaecQmZmpjfZZVxc\nHOPHjw9J+SyQtFIiQttRo7zpVvKWr2DbRRezf9qzlOdbuhUTPr5p5O+9916efvppzj77bPr168dD\nDz0EeFJ+XHzxxZxxxhn06dOHuXPn8sILL3jTyFd3Z3tCQgKTJ0/mrLPO4vzzz2fVqlWMHDmSk046\nifnz5wOeYbjDhg2jf//+9O/fnxUrVgAwb948zj//fFSVH374gV69erF3796An1NQUMCECRPo168f\nV1111XFp5AcPHkz//v254oorvClgunfvzuTJkxk4cCADBw5ky5YtrFixgvnz53PvvfeSkZHhvbP9\nrbfeYuDAgfTq1Ytly5ZVe04/+eQTevTowQknnBDkv0Lt2H0krVxFupXESy8le9o0cmbOJHfePDre\n89+0/elPkWoS0pmWb+qqqXz747c1b1gLp7Y/lckDJ1e5/sknn2T9+vVkZmby8ccf8/bbb7Nq1SpU\nlXHjxrF06VKys7NJS0vjgw8+ADy5sRITE5k2bRqffvpptXeGV6SRnzp1KuPHj/emkd+wYQO/+MUv\nGDdunDeNfExMDJs3b2bixImsWbOG8ePH88477zBjxgwWLlwYdBr5r776iv79+wOV08jHx8czdepU\npk2b5k06WZFG/q9//St33nkn77//PuPGjWPs2LFcfvnl3uNXpJFfsGABDz/8MIsXL2bPnj3ceOON\nlTIAA8yZM6faTMX1ZVcJA0BkakfSpj5J9zmziejcmT2T72fHxIkUrFsX7qKZVsw3jXz//v359ttv\n2bx5M3379mXx4sVMnjyZZcuWkZiYGPQx/dPIjxgxImAa+Ztuuom+fftyxRVXVGpWmj59Ok888QTR\n0dE1ppG/9tprgarTyGdkZPD666/z/fffe/fzTSP/eTX9l8GkkQdPmvr58+dzxRVXBHN66sRqJKaS\n2IwMus+ZTe78+ex/5hl2XDWBxEsvJeXuu4js2DHcxTONrLqaQ2OwNPL1SyMP8OGHH9K/f39SU1Or\n3Ka+rEZijiMuF+0uvZQeHy6kw003cfiDD9g2egwHZr5MuV/KCWMamqWRb5g08hVmz54d0mYtsEBi\nquFOiKfjf9/NSR+8T9yQwWRPm8a2sT/lyCef0BpS65jwsDTyDZNGHjxBatGiRd5msFCxXFsmaPkr\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa79b98850>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_1.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(max_depth), len(min_child_weight))\n",
    "train_scores = np.array(train_means).reshape(len(max_depth), len(min_child_weight))\n",
    "\n",
    "for i, value in enumerate(max_depth):\n",
    "    plt.plot(min_child_weight, -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "plt.legend()\n",
    "plt.xlabel( 'min_child_weght' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 初步确定树的最大深度为５，子叶的最小权重为１，此时最小此时最小logloss为0.6257902772229056，性能有所提高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62709, std: 0.00563, params: {'max_depth': 4}, mean: -0.62579, std: 0.00726, params: {'max_depth': 5}, mean: -0.62908, std: 0.00492, params: {'max_depth': 6}]\n",
      "best_params-------------->\n",
      "{'max_depth': 5}\n",
      "best_score--------------->\n",
      "-0.6257902772229056\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# max_depth 和 min_child_weight 参数微调,其中min_child_weight为１不变，max_depth在５之间变动\n",
    "max_depth = [4,5,6]\n",
    "param_test2_2 = dict(max_depth=max_depth)\n",
    "xgb2=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch2_2 = GridSearchCV(xgb2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch2_2.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch2_2.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa72b05510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(2,4))\n",
    "y = test_means = gsearch2_1.cv_results_[ 'mean_test_score' ]\n",
    "plt.plot([4,5,6],-y)\n",
    "plt.xlabel( 'max_depth' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 由上图依然可以看出，最佳性能时，树的最大深度为５"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62614, std: 0.00714, params: {'reg_alpha': 1e-05}, mean: -0.62604, std: 0.00494, params: {'reg_alpha': 0.01}, mean: -0.62689, std: 0.00573, params: {'reg_alpha': 0.1}, mean: -0.62724, std: 0.00403, params: {'reg_alpha': 1}, mean: -0.72884, std: 0.00018, params: {'reg_alpha': 100}]\n",
      "best_params-------------->\n",
      "{'reg_alpha': 0.01}\n",
      "best_score--------------->\n",
      "-0.6260364836426509\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "#对正则参数进行调优,尝试先单独调试其大致范围，后联合调试\n",
    "param_test3_1 = {\n",
    " 'reg_alpha':[1e-5, 1e-2, 0.1, 1, 100]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_1 = GridSearchCV(xgb3, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_1.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_1.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62614, std: 0.00714, params: {'reg_alpha': 1e-05}, mean: -0.62604, std: 0.00494, params: {'reg_alpha': 0.01}, mean: -0.62689, std: 0.00573, params: {'reg_alpha': 0.1}, mean: -0.62724, std: 0.00403, params: {'reg_alpha': 1}, mean: -0.72884, std: 0.00018, params: {'reg_alpha': 100}]\n",
      "best_params-------------->\n",
      "{'reg_alpha': 0.01}\n",
      "best_score--------------->\n",
      "-0.6260364836426509\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "param_test3_2 = {\n",
    " 'reg_alpha':[0, 0.001, 0.005, 0.01, 0.05]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_2 = GridSearchCV(xgb3, param_grid = param_test3_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_2.fit(X_train , y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62579, std: 0.00726, params: {'reg_alpha': 0}, mean: -0.62665, std: 0.00730, params: {'reg_alpha': 0.001}, mean: -0.62643, std: 0.00403, params: {'reg_alpha': 0.005}, mean: -0.62604, std: 0.00494, params: {'reg_alpha': 0.01}, mean: -0.62683, std: 0.00553, params: {'reg_alpha': 0.05}]\n",
      "best_params-------------->\n",
      "{'reg_alpha': 0}\n",
      "best_score--------------->\n",
      "-0.6257902772229056\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa79c1d450>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_2.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_2.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_2.best_score_\n",
    "plt.figure(figsize=(2,4))\n",
    "y = test_means = gsearch3_2.cv_results_[ 'mean_test_score' ]\n",
    "plt.plot([0, 0.001, 0.005, 0.01, 0.05],-y)\n",
    "plt.xlabel( 'reg_alpha' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62775, std: 0.00391, params: {'reg_lambda': 1e-05}, mean: -0.62755, std: 0.00359, params: {'reg_lambda': 0.01}, mean: -0.62806, std: 0.00416, params: {'reg_lambda': 0.1}, mean: -0.62579, std: 0.00726, params: {'reg_lambda': 1}, mean: -0.64216, std: 0.00337, params: {'reg_lambda': 100}]\n",
      "best_params-------------->\n",
      "{'reg_lambda': 1}\n",
      "best_score--------------->\n",
      "-0.6257902772229056\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "param_test3_3 = {\n",
    " 'reg_lambda':[1e-5, 1e-2, 0.1, 1, 100]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_3 = GridSearchCV(xgb3, param_grid = param_test3_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_3.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_3.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_3.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_3.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62685, std: 0.00523, params: {'reg_lambda': 0.5}, mean: -0.62579, std: 0.00726, params: {'reg_lambda': 1}, mean: -0.62691, std: 0.00483, params: {'reg_lambda': 1.5}, mean: -0.62601, std: 0.00450, params: {'reg_lambda': 10}]\n",
      "best_params-------------->\n",
      "{'reg_lambda': 1}\n",
      "best_score--------------->\n",
      "-0.6257902772229056\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "param_test3_3 = {\n",
    " 'reg_lambda':[0.5, 1, 1.5,10]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_3 = GridSearchCV(xgb3, param_grid = param_test3_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_3.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_3.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_3.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_3.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa79742690>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(2,4))\n",
    "y = test_means = gsearch3_3.cv_results_[ 'mean_test_score' ]\n",
    "plt.plot([0.5, 1, 1.5,2],-y)\n",
    "plt.xlabel( 'reg_lambda' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62503, std: 0.00433, params: {'reg_alpha': 0.001, 'reg_lambda': 0.5}, mean: -0.62665, std: 0.00730, params: {'reg_alpha': 0.001, 'reg_lambda': 1}, mean: -0.62579, std: 0.00563, params: {'reg_alpha': 0.001, 'reg_lambda': 1.5}, mean: -0.62636, std: 0.00756, params: {'reg_alpha': 0.001, 'reg_lambda': 2}, mean: -0.62634, std: 0.00510, params: {'reg_alpha': 0.01, 'reg_lambda': 0.5}, mean: -0.62604, std: 0.00494, params: {'reg_alpha': 0.01, 'reg_lambda': 1}, mean: -0.62603, std: 0.00469, params: {'reg_alpha': 0.01, 'reg_lambda': 1.5}, mean: -0.62384, std: 0.00522, params: {'reg_alpha': 0.01, 'reg_lambda': 2}, mean: -0.62769, std: 0.00512, params: {'reg_alpha': 0.1, 'reg_lambda': 0.5}, mean: -0.62689, std: 0.00573, params: {'reg_alpha': 0.1, 'reg_lambda': 1}, mean: -0.62499, std: 0.00480, params: {'reg_alpha': 0.1, 'reg_lambda': 1.5}, mean: -0.62581, std: 0.00468, params: {'reg_alpha': 0.1, 'reg_lambda': 2}, mean: -0.62708, std: 0.00482, params: {'reg_alpha': 1, 'reg_lambda': 0.5}, mean: -0.62724, std: 0.00403, params: {'reg_alpha': 1, 'reg_lambda': 1}, mean: -0.62611, std: 0.00562, params: {'reg_alpha': 1, 'reg_lambda': 1.5}, mean: -0.62605, std: 0.00565, params: {'reg_alpha': 1, 'reg_lambda': 2}]\n",
      "best_params-------------->\n",
      "{'reg_alpha': 0.01, 'reg_lambda': 2}\n",
      "best_score--------------->\n",
      "-0.6238440230516141\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "param_test3_3 = {\n",
    " 'reg_lambda':[0.5, 1, 1.5,2],\n",
    " 'reg_alpha':[0.001,0.01,0.1,1]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_4 = GridSearchCV(xgb3, param_grid = param_test3_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_4.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_4.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_4.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_4.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAELCAYAAADkyZC4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXdcleX7x983e8geKiLiAJy5B2K5MldqmphWrnKkmVmZ\npd+Gmb/Sho3v1yxHrsyBmpqj4cCBe5aDJaIgKhtkHjjn/v1xjnhUQETgHOB5v17nxXme57rv53oY\n58N1j+sSUkoUFBQUFBTKGhNDO6CgoKCgUDVRBEZBQUFBoVxQBEZBQUFBoVxQBEZBQUFBoVxQBEZB\nQUFBoVxQBEZBQUFBoVxQBEZBQUFBoVxQBEZBQUFBoVxQBEZBQUFBoVwwM7QDhsTV1VV6e3sb2g0F\nBQWFSsWpU6cSpZRuD7Or1gLj7e3NyZMnDe2GgoKCQqVCCHG1JHbKEJmCgoKCQrmgCIyCgoKCQrmg\nCIyCgoKCQrlQredgFBQUypa8vDxiY2PJyckxtCsKZYCVlRWenp6Ym5uXqr0iMAoKCmVGbGwsdnZ2\neHt7I4QwtDsKj4GUkqSkJGJjY6lfv36p+lCGyBQUFMqMnJwcXFxcFHGpAgghcHFxeaxoVBEYBQWF\nMkURl6rD4/4sFYEpBck5yay6sIq03DRDu6KgoKBgtCgCUwoOxh7ky5Nf0mNDD2YdnMXZ+LNIKQ3t\nloKCgoJRoQhMKRjUaBAbB2xksM9g9sbsZeSukTz/+/OsDV3LbdVtQ7unoKBQQQQHB/Pss88+tk1x\nSCmZOnUqjRo14oknnuD06dOF2p06dYoWLVrQqFEjpk6dWvBPb3JyMr169cLHx4devXqRkpICQGho\nKP7+/lhaWvLVV1+V2r/iUASmlPg5+/FBpw/YG7iXj/0/xkyY8dmxz+gZ1JPZh2dzIfGCoV1UUKj2\nSCnRaDSGduOx2LVrFxEREURERLB48WImTZpUqN2kSZNYvHhxge0ff/wBwLx58+jZsycRERH07NmT\nefPmAeDs7Mz333/P9OnTy813ZZnyY2JjbsNQ36EM9R3KhcQLbAjfwM4rO9kUsYmmLk0J9A2kX/1+\n2JjbGNpVBYUK5ZPfL3AxLr1M+2zqYc/HA5oVaxMdHU3fvn3p3r07R44cYdq0afz444/k5ubSsGFD\nli9fTo0aNdi5cydvv/02rq6utGnThqioKLZv315on8ePH2fatGlkZ2djbW3N8uXL8fPzu8dm9uzZ\nXL58mevXrxMTE8OMGTMYP348ABkZGQwdOpTz58/Ttm1bfvnlF4QQzJkzh99//53s7Gw6d+7MTz/9\n9MDE+tatWxk1ahRCCDp16kRqaio3btygdu3aBTY3btwgPT0df39/AEaNGsWWLVvo27cvW7duJTg4\nGIDRo0fTrVs35s+fj7u7O+7u7uzYseORfgaPghLBlCHNXJvxSedP2BO4h1kdZ6FSq/jkyCf0COrB\n3KNzCUsOM7SLCgrVgrCwMEaNGsXff//NsmXL2L17N6dPn6Zdu3YsWLCAnJwcJk6cyK5duzh06BAJ\nCQnF9te4cWMOHDjAmTNnmDNnDrNmzSrU7p9//mHHjh0cOXKEOXPmEBcXB8CZM2f49ttvuXjxIlFR\nUYSEhAAwZcoUTpw4wfnz58nOzi4QuB9//JEff/wRgOvXr1O3bt2Ce3h6enL9+vV77nv9+nU8PT0L\ntbl161aBGNWuXZv4+PgSfx8fFyWCKQfsLOwY0XgEw/2Gcy7hHBvCNvBbxG+sD1tPS7eWDPMbxjP1\nnsHKzMrQrioolBsPizTKk3r16tGpUye2b9/OxYsXCQgIAEClUuHv709oaCgNGjQo2EA4YsQIFi9e\nXGR/aWlpjB49moiICIQQ5OXlFWo3aNAgrK2tsba2pnv37hw/fhxHR0c6dOhQIACtWrUiOjqaLl26\nsG/fPr744guysrJITk6mWbNmDBgwgNdee62gz8IWEN0f5ZTExhCUawQjhOgjhAgTQkQKId4vwmaY\nEOKiEOKCEOJX3blWQogjunP/CCFe0LM/KIQ4q3vFCSG26M53E0Kk6V37qDyfrSQIIWjl3orPnvyM\nPYF7eLfdu6TlpvGfQ/+hZ1BP5h+fT1RalKHdVFCoctja2gLaD95evXpx9uxZzp49y8WLF1m2bNkj\nr/r88MMP6d69O+fPn+f3338vcvPh/R/qd44tLS0LzpmampKfn09OTg6TJ09m48aN/Pvvv4wfP77Q\nfj09PYmJiSk4jo2NxcPD4wGb2NjYQm1q1qzJjRs3AO1Qmru7+6M8+mNRbgIjhDAFFgJ9gabACCFE\n0/tsfICZQICUshkwTXcpCxilO9cH+FYI4QggpXxSStlKStkKOAJs1uvy4J1rUso55fVspcHRypFR\nzUax7blt/Nz7Zzp7dGZd2DoGbRnE2D/GsuvKLlRqlaHdVFCoUnTq1ImQkBAiIyMByMrKIjw8nMaN\nGxMVFUV0dDQA69evL7aftLQ06tSpA8CKFSuKtNu6dSs5OTkkJSURHBxM+/bti7S9Iyaurq5kZGSw\ncePGQu0GDhzIqlWrkFJy9OhRHBwc7pl/Ae3Ql52dHUePHkVKyapVqxg0aFBB+5UrVwKwcuXKgvMV\nQXkOkXUAIqWUUQBCiHXAIOCins14YKGUMgVAShmv+xp+x0BKGSeEiAfcgNQ754UQdkAPYGw5PkOZ\nI4Sgfa32tK/VnqTsJLZEbiEoPIgZB2bgbOXMoEaDCPQJpK593Yd3pqCgUCxubm6sWLGCESNGkJub\nC8DcuXPx9fXlhx9+oE+fPri6utKhQ4di+5kxYwajR49mwYIF9OjRo0i7Dh060L9/f65du8aHH36I\nh4cH4eHhhdo6Ojoyfvx4WrRogbe39z1idGf+5bXXXqNfv37s3LmTRo0aYWNjw/LlywvsWrVqxdmz\nZwFYtGgRY8aMITs7m759+9K3b18A3n//fYYNG8ayZcvw8vIiKCgIgJs3b9KuXTvS09MxMTEpmCOy\nt7d/2Le1xIjy2iAohBgK9JFSjtMdjwQ6Simn6NlsAcKBAMAUmC2l/OO+fjoAK4FmUkqN3vlRwEAp\n5VDdcTdgExALxAHTpZTFrhVu166dNIaKlhqp4UjcEYLCgwiOCUYt1XT26EygbyBd63bF3KR0mUwV\nFCqaS5cu0aRJE0O7USIyMjKoUaMGUkpef/11fHx8eOutt0rd3+zZs6lRo0a5Lvs1BIX9TIUQp6SU\n7R7WtjwjmMJmmO5XMzPAB+gGeAIHhRDNpZSpAEKI2sBqYLS+uOgYASzVOz4N1JNSZggh+gFbdH3f\n65QQE4AJAF5eXo/6TOWCiTAhoE4AAXUCuJV5i82Rm9kUvom3gt/CzdqNIT5DeN7neWrXqP3wzhQU\nFErEkiVLWLlyJSqVitatWzNx4kRDu1TlKM8Ixh9tRNJbdzwTQEr5uZ7Nj8BRKeUK3fEe4H0p5Qkh\nhD0QDHwupQy6r28XtJFPHSllobNtQohooJ2UMrEoH40lgimMfE0+h64fYkPYBg5dP4QQgifrPEmg\nbyBd6nTB1MTU0C4qKDxAZYpgCmP58uV8991395wLCAhg4cKFBvLI8BhrBHMC8BFC1AeuA8OBF++z\n2YI2ElkhhHAFfIEoIYQF8Buw6n5x0REIbNcXFyFELeCWlFLqhtVMgKSyfqiKwszEjG51u9Gtbjfi\nMuLYGL6R3yJ/Y//e/dS2rc3zPs8zxGcIbjZuhnZVQaHKMHbsWMaOrVTTukZNua0ik1LmA1OAP4FL\nwAYp5QUhxBwhxECd2Z9AkhDiIrAPeFdKmQQMA54CxugtO26l1/1wYO19txwKnBdCnAO+B4bLKpKB\n0qOGB1PbTOWvoX+xoNsC6tnX439n/0evjb14a99bHI47jOaBEUQFBQUFw1JuQ2SVAWMeInsY19Kv\nFUQ1qbmp1LWry1DfoTzX6DmcrZwN7Z5CNaWyD5EpPMjjDJEpqWIqKV72Xrzd7m32BO5h3pPzcLdx\n55tT3/B00NPM2D+DEzdPKCUEFBQUDIqSKqaSY2FqQf8G/enfoD+XUy+zMXwjWy9vZVf0Luo71CfQ\nN5CBDQfiYOlgaFcVFBSqGUoEU4Vo6NiQ9zq8x57APXwa8Cl2FnZ8ceILegb15D+H/qMURlNQKGOM\nqR7Mf/7zH+rWrUuNGjVKfa+yRhGYKoi1mTXPNXqONf3WEDQgiEENB7H76m5G7hrJ0N+Hsj50PRmq\nDEO7qaBQ7lSnejADBgzg+PHjFexd8ShDZFWcxs6N+dD/Q95u9zY7r+wkKCyIucfm8vWpr+lXvx+B\nfoE0czFc1luFKsyu9+Hmv2XbZ60W0HdesSbVsR4MaPOuGRtKBFNNsDW3JdA3kPXPrmdt/7X08e7D\njqgdDN8+nOHbh7M5YjNZeVmGdlNBoUyobvVgjBUlgqlmCCFo7tqc5q7Nmd5+OtsvbycoPIiPD3/M\nlye+5NkGzxLoF4ivk6+hXVWo7Dwk0ihPqls9GGNFEZhqjL2FPS82eZERjUdwJv4MQeFBbI7YzLqw\ndbR2b02gbyC96vUy6sJomtxc1MnJ5Ccno05JxcrPFzM3JbtBdef+ejBr1967L/vMmTOP1N+dejC/\n/fYb0dHRdOvWrVC70tSDOXnyJHXr1mX27NmlrgdjrCgCo4AQgjY129CmZhvea/8eWy9vJSg8iFmH\nZjH/xHwGNhxIoG8g9R3ql7svmqws8pNTUCcnaUUjOQV1SvLd98nJ5Kdov6qTk9Fk3TusJ6ytcRk/\nDpdXXsHEyniFUaFi6NSpE6+//jqRkZE0atSIrKwsYmNj76kH4+3tXab1YGbOnElmZibBwcHMmzev\nyHT9hdWDGTp06AN2AwcO5H//+x/Dhw/n2LFjhdaDMVYUgVG4B0crR0Y3G82opqM4fvM4QeFBrL20\nltUXV9OhVgcCfQPp6dUTc9OHlxCQUqLJyNCLMHQCoRMKrXDcEQ2tgMiiKgWam2Pq7IypszNmTk5Y\neHlh5uKMqZMzps5OmDk7Y2JrS8radSR+/19SN26k5vTp2PXtW2mGExTKnupUD2bGjBn8+uuvZGVl\n4enpybhx45g9e3aJvk/lhZIqppKmiqlIErMT2RK5hU2hQaQkXcdL7UA/py50rdEKx2zTYiMMWcRY\ntbCy0gmDi/ark7NOQLRiYerkjJmzU4GomNjallgoMo8d59bnn5MbGop127bUnDkT6+bKSrmKoDKl\nilHqwZQMY82mrGDkSLUadVra3QjjvuGo/OSkAtF4KiWFgJQUUKuBZGAbOWzjpq4vE1vbAoEwr1kT\nqyZNtAKhE44CsdAJh4mNTbk9l23HDtTftJHUzZtJ+PY7ogMDcXjuOdzemoZ5BdYjVzBulHow5Y8S\nwVShCEbm56NOSdEOO6VoI4j8pOSiI4y0NChiE5qJvT1mTncjiLtioY0w0q0hOOMMW5L2cUUk4mRX\nkyG+2sJotWxrVfCTF4369m0Sf/yR5FWrMTE3x2XiRJzHjMZEb9JVoeyoTBFMYSj1YB7kcSIYRWCM\nWGA0KpV23iIp6V7RuG/e4o5oaNLSCu9ICEwdHO4OQd0zHOVyd1jK2RlTJyfMnJwQ5iUr05yvyedg\n7EE2hG8g5HoIQgieqvMUgX6BBHgEGE1hNNXVq9z64ksy9uzBvE4d3N99F7vezyjzM2VMZRcYhQdR\nBKaUVLTAaLKz7wpESuHDUvoRhiajiHQuJiZaIbgTVbg4Fz+H4eCAMCv/0dDrGdfZFL6JzRGbScpJ\nwsPWg+d9tYXRXK1dy/3+JSHzyBFuffY5uRER2LRvT82Z72PVtKmh3aoyKAJT9VAEppQ8jsBIKdFk\nZulFFfpiUUiEkZyMzM4uvDNz84LhqAfmLfSGpe5EGKYODggT403CkKfOY1/MPjaEb+DYjWOYCTO6\ne3Un0DeQjrU7YiIM67vMzyd140YSvvsedWoqjkOfx+3NNzFzNQ4RrMwoAlP1UASmlJRWYNL//Iu4\nd99FqlSFXheWlgXLaQsflro3wjCxs6uyQzVX06+yMXwjWyK3kJqbipedF4G+gQxqNAgnKyeD+qZO\nTydx4Q8kr1mDiaUlrpNew2nUKEwsLAzqV2VGEZiqx+MIDFLKcnsBfYAwIBJ4vwibYcBF4ALwq+5c\nK+CI7tw/wAt69geBs7pXHLBFd16gLZUcqWvT5mH+tW3bVpaG7NAweXP+FzJxyRKZsnGTTN+7V2ad\nOydzY2KkOiNDajSaUvVblcnJz5G/X/5djto5SjZf0Vy2XtVaztg/Q568edLg36+cqCh5beJr8qJf\nYxnR6xmZ/vffBvepsnLx4kVDu1Ch7Nu3T/bv3/+xbYpDo9HIN954QzZs2FC2aNFCnjp1qlC7kydP\nyubNm8uGDRvKN954o+B3eMOGDbJp06ZSCCFPnDjxyPcv7GcKnJQl0YCSGJXmBZgCl4EGgAVwDmh6\nn40PcAZw0h276776Aj669x7ADcCxkHtsAkbp3vcDdumEphNw7GE+llZgFB6PiOQI+dnRz6T/Gn/Z\nfEVzOfC3gfKXi7/I1JxUg/p1++AhGdm/v7zo11hGjx4js0NDDepPZcTYBEaj0Ui1Wl1u/VeEwOzY\nsUP26dNHajQaeeTIEdmhQ4dC7dq3by8PHz4sNRqN7NOnj9y5c6eUUvszCQ0NlV27dq1wgSnPwfAO\nQKSUMkpKqQLWAYPusxkPLJRSpgBIKeN1X8OllBG693FAPHBPgikhhB3QA9iiOzUIWKV7/qOAoxCi\ncuRTqGY0cmrEzI4z2TNsD3M6z8HW3JZ5x+fxdNDTfHDoA/5J+McghdFqdAmgwZYt1PzwA3IvXeLK\n4CHc+Hg2+cnJFe6LQumJjo6mSZMmTJ48mTZt2rB69Wr8/f1p06YNgYGBZOgWz+zcuZPGjRvTpUsX\npk6dWmxRsOPHj9O5c2dat25N586dCQsLe8Bm9uzZjBw5kh49euDj48OSJUsKrt1J19+4cWNeeuml\ngt/vOXPm0L59e5o3b86ECRMK/b0vKl2/Pjdu3CA9PR1/f3+EEIwaNYotW7QfjU2aNHmgtEBFUZ5L\ni+oAMXrHsUDH+2x8AYQQIWgjntlSyj/0DYQQHdBGQJfvazsY2COlTC/mfnXQRj8KRoi1mTWDfQYz\n2Gcwl5IuERQexI6oHWy9vBU/Jz+G+Q2jf4P+2JrbVphPwswM55dewqF/fxIW/kDKr7+SvnMnrpMn\n4/zSiwhlfqbEzD8+n9Dk0DLts7FzY97r8N5D7cLCwli+fDlz5sxhyJAh7N69G1tbW+bPn8+CBQuY\nMWMGEydO5MCBA9SvX58RI0YUf19dun4zMzN2797NrFmz2LRp0wN2//zzD0ePHiUzM5PWrVvTv39/\nQJtc88KFC3h4eBAQEEBISAhdunRhypQpfPTRRwCMHDmS7du3M2DAgHtSxRSVrl8/H9n169cLsjXr\n2xia8oxgCpu1vl+ezdAOk3UDRgBLhRCOBR1oI5DVwFgp5f07AkcA+ilSS3I/hBAThBAnhRAnH1YD\nQqHiaOLShI/8P2LvsL182OlDhBB8evRTemzowSdHPuFS0qUK9cfU0ZFa/5lFg21bsW7Vivj584ka\nOIjb+/YpZacrAXfS9R89erQgXX+rVq1YuXIlV69eLTRdf3GkpaURGBhI8+bNeeutt7hw4UKhdnfS\n9bu6uhak6wcK0vWbmJgUpOsH2LdvHx07dqRFixbs3bu3oN/XXnutIGV/Yb9v9y8KKomNISjPCCYW\nqKt37Il2Uv5+m6NSyjzgihAiDK3gnBBC2AM7gA90Q14FCCFc0A7BDX7E+yGlXAwsBu0qslI8l0I5\nYmtuyzC/YQT6BnI+8Twbwjew/fJ2NoZvpIVrCwJ9A+nt3Rsb8/JLNaOPZcOGeC1ZTMaBA9z6fB6x\nkyZj27kzNWe+j6WPT4X4UFkpSaRRXlS3dP2enp7ExsYWa2MIyjOCOQH4CCHqCyEsgOHAtvtstgDd\nAYQQrmiHzKJ09r+hnVMJKqTvQGC7lFL/p7ENGCW0dALSpJTK8FglRQhBC7cWfBrwKXuG7eH9Du+T\nlZfFR4c/4umgp/n82OdEpkRWmD81nnqKBtu2UnPWTLLPnyfqucHcnPMp+SkpFeaDwqPTqVMnQkJC\niIzU/q5kZWURHh5+T7p+oEzT9efk5JCUlERwcPA9GZLvp7B0/YUxcOBAVq1ahZSSo0ePFpquv3bt\n2tjZ2XH06FGklKxatYpBg+6f8q54yk1gpJT5wBTgT+ASsEFKeUEIMUcIMVBn9ieQJIS4COwD3pVS\nJqFduvwUMEYIcVb3aqXX/XDuHR4D2AlEoV2mvASYXF7PplCx2FvY81KTl/ht0G+s6LOCJz2fJCg8\niMHbBjN612i2R20nV51b7n4Ic3OcR42i4Z9/4PTCMFLWreNy7z4kr1pVZNZoBcOin67/iSeeoFOn\nToSGhmJtbV2Qrr9Lly7UrFkTBweHIvuZMWMGM2fOJCAgALVaXaTdnXT9nTp1KkjXXxT66fqfe+65\nB9L135mH6devHw0aNKBRo0aMHz+eH374ocCuVau7H4uLFi1i3LhxNGrUiIYNG9K3b18AfvvtNzw9\nPTly5Aj9+/end+/eD//GlRHKRksjzkWmUDQpOSlsjdQWRrt2+xqOlo4MajiIkU1HUtO2ZoX4kBMe\nTvy8+WQePoxFgwbUfP89ajz1VIXc21ipTBstlXT9JeNxNloab74RBYVicLJyYkzzMfw++HeWPLOE\n9rXas+bSGl7c8SJX0q5UiA9Wvr7UXbYUzx9+ALWamAkTuTZhArlRURVyf4XHY8mSJbRq1YpmzZqR\nlpampOsvB5QIRolgqgzhKeGM/2s8AEueWYKvk2+F3VuqVCSv+ZXEH35Ak52N04gRuL0+GVNHx4c3\nrkJUpgimMJR0/Q+i5CIrJYrAVD2i0qIY/+d4cjW5LO61mKYuFZspOT85mYTvvic1KAhTOztcp76B\n0wsvVEg2a2OgsguMwoMoQ2QKCjoaODRgRZ8V2JjZMO7PcZxLOFeh9zdzdqb2J7Op/9tmLBs35tan\nc4l67jkyDoVUqB8KCsaAIjAKVY669nVZ2WcljlaOTPhrAidvVnyUauXnh9eK5Xj+77/IXBUx48YR\n89okcq9UzPyQgoIxoAiMQpWkdo3arOizgpq2NZm0exKH4w5XuA9CCOyefpoGO7bjPv0dsk6cIGrg\nIG7Nm486Pf3hHSgoVHIUgVGosrjbuLO893K87L2YsmcK+2P2G8QPEwsLXMaNo+Gff+AwaCDJK1dy\nuXcfUtatQxazp0JBobKjCIxClcbF2oWfe/+Mr5Mv0/ZN46/ovwzmi5mrKx5z51J/00YsGzbk5uxP\nuDJ4CJlHjz68sYJREhwcXGwW5pLaFEdoaCj+/v5YWlry1VdflbofQ6AIjEKVx8HSgSXPLKG5a3Pe\nPfAu26O2G9Qfq6ZN8Vq9ijrffosmM5NrY8YSM2UKqqtXDepXVURKiUZzf57cyoWzszPff/99pdzA\nqQiMQrXAzsKOn3r9RLua7Zh1cBabIzYb1B8hBPZ9etNg5w7cpk0j8/ARop4dwK0vv0Stq1eiUDqq\nWj0Yd3d32rdvj7m5+eN+ayqc6rE4X0EBsDG3YWHPhUwLnsbHhz8mV53LiMbFp2kvb0wsLXF9bSIO\nQwaT8M23JC/7mbQtW3Gb9iaOQ4YgTE0N6t/jcPOzz8i9VLb1YCybNKbWrFkPtatK9WAqM0oEo1Ct\nsDKz4vvu39O9bnc+O/YZK86vMLRLAJi7u+Px+Wd4BwVhUa8eNz/8iCtDA8nU1RNReDSqUj2YyowS\nwShUCW7n5DF720WsLUwY7e+NT027Im0tTC34utvXzDw4k69PfU2OOoeJT0w0igJN1i2aU2/NL9ze\ntYtbX33FtVGjsXvmGdxnvIuFXsXCykBJIo3yoirVg6nMKBGMQqUnOjGTwT8cZsvZ62w4GUuvbw4w\nctkx9obeQqMpPBWSuYk585+cz8CGA1l4diHfn/neaCpVCiGw79ePhjt34jr1DTIOHiSqX3/iF3yD\nOiPT0O5VKqpCPZjKjBLBKFRqQiITmbzmNELA6lc74FfTjrXHr7H66FVeWXGS+q62jPavx9B2dalh\nee+vu6mJKZ8GfIqlqSVL/11KTn4OM9rPMIpIBsDEygq3yZNxHDKEhG++IWnxYlJ/24z7tLdwGPwc\nwkT5//Bh6NeDyc3V1gyaO3cuvr6+BfVgXF1d6dChQ7H9zJgxg9GjR7NgwQJ69OhRpN2dejDXrl0r\nqAcTHh5eqK1+PRhvb+8H6sGAdqjs5s2btGvXjvT0dExMTPj222+5ePEi9vb2j/rtqHCUZJdKsstK\niZSSVUeuMmf7RRq62bJ0VHu8XO6WUc5Ta9h1/ibLQ65w5loqNSzNCGznyZjO3tRzsX2gry9OfMEv\nl34h0DeQDzp9gIkwvg/v7HPnuPXZ52SfO4dVs2bUnDUTm7ZtDe3WPVSmZJdKPZiS8TjJLpUIRqHS\nocrX8PG286w9HsPTTWry7fBWD0Qn5qYmDGzpwcCWHpyNSWV5yBVWH7nKisPR9PBzZ2xAfQIauSCE\nQAjBjPYzsDS1ZNn5ZeSqc5nTeQ6mJsa1gsu6ZUvqrf2V9B07iP/qa66+9DJ2fftQc/p0zHXDNwol\nZ8mSJaxcuRKVSkXr1q2VejDlQLlGMEKIPsB3gCmwVEo5rxCbYcBsQALnpJQv6sojLwLsATXwf1LK\n9Tp7AcwFAnXXFkkpvxdCdAO2AneyCW6WUs4pzj8lgql8JGXkMumX0xyPTmZK90a83csXE5OSDWnd\nSs9hzdGrrDl2jaRMFb41azCmc30Gt66DtYUpUkp++ucnFp5dSB/vPnz25GeYmxjn3gNNVhZJS5eR\ntGwZAM6vjMV13DhMbG0f0rJ8qUwRTGEo9WAexCjrwQghTIFwoBcQC5wARkgpL+rZ+AAbgB5SyhQh\nhLuUMl4I4QtIKWWEEMIDOAU0kVKmCiHGAt2BMVJKjV6bbsB0KWWJczIoAlO5uBiXzvhVJ0nMyOXL\nwJYMbFl0vfPiyMlTs/2fGywPucKFuHQcrM0Z3qEuo/y9qeNozfLzy1lwagE96vbgy65fYmFqUcZP\nUnbkxcUyIfE9AAAgAElEQVQR//UC0nfswMzdHfd33sZ+wACDzc9UdoFReBBjrQfTAYiUUkZJKVXA\nOmDQfTbjgYVSyhQAKWW87mu4lDJC9z4OiAfcdG0mAXOklBr9NgpVm13/3uD5RYdRayRBr/mXWlwA\nrMxNGdrWk+1vdGHDRH86N3RhyYEonvpiH5PXnKKZ7SBmdpjJ3pi9TN03lZx84106au7hQZ2vv6Le\nr79i5u5O3HvvEz18BFmPuAy3LKnO87pVjcf9WZanwNQBYvSOY3Xn9PEFfIUQIUKIo7ohtXsQQnQA\nLIDLulMNgReEECeFELt0UdAd/IUQ53Tnm5XdoygYCo1G8u3ucCatOU3j2nZsmxLAE55lU4ZYCEGH\n+s4serktB9/rwbgn6xMSmcSwn46w5u+6DPB4k8PXD/P6ntfJyssqk3uWFzZtWuO9YT21531O/o0b\nXB3xItenv0vejRsV6oeVlRVJSUmKyFQBpJQkJSVhZWVV6j7Kc4gsEOgtpRynOx4JdJBSvqFnsx3I\nA4YBnsBBoLmUMlV3vTYQDIyWUh7VncsAPpZSfi2EGAK8JaV8UghhD2iklBlCiH7Ad1JKffG5c88J\nwAQALy+vtleVBINGS5Yqn+lB59j5702GtKnDZ4NbYGVevhPvWap8fjtznRUh0UTEZ+Dk/g9ql3U0\nc27B4t6LsLMoegOnsaDJzCRxyRKSf14OJia4jBuHy6uvYGJtXe73zsvLIzY2tsptGKyuWFlZ4enp\n+UAeNGOYg/EHZkspe+uOZwJIKT/Xs/kROCqlXKE73gO8L6U8oROMYOBzKWWQXptQoI+UMlo34Z8q\npXQo5P7RQDspZWJRPipzMMZLbEoW41edIuxmOrP6NeHVLvUrdH+KlJKQyCSWh1xhf9werDzW4mDi\nzRdd/ktAA68K8+NxUMVeJ/7rr7i96w/MatXC/Z13sH+2v9Hs81GovBjDHMwJwEcIUV8IYQEMB7bd\nZ7MF7YQ9QghXtENmUTr734BV+uKi1+bOTqeuaBcSIISopROcO8NqJkBSmT+VQrlzIjqZQf8LITYl\ni5/HtGfckw0q/ENRCEEXH1eWjWnP7glv0LnGO6RprjL+73EM/OEPtp2LI09t3GngLTzr4PnNN9T7\nZTVmzs7EvfsuV0e8SPY//xjaNYVqQnkvU+4HfIt2mfLPUsr/E0LMAU5KKbfpBOFroA93lyOvE0K8\nDCwH9DPKjZFSnhVCOAJrAC8gA3hNSnlOCDEF7QKAfCAbeFtKWWydXCWCMT7Wn7jGB1vO4+lkw9LR\n7WjoVsPQLhWwJ/og0w9MQ+Y5kXblVWrauDPSvx7D29fFpYblwzswIFKtJm3LFuK/+RZ1YiIOgwbi\n9vbbmNesaWjXFCohBh8iqwwoAmM85Ks1zN1xiRWHo3nSx5X/jWiDg43x7UE5cfMEU/ZMwcbUCffM\nqRyLkFiYmfBcKw/GBtSnSW3jTt+hzsgk6aefSF6xAszMcJ0wHuexYzF5jIlcheqHIjAlQBEY4yA1\nS8WUX89wKDKRcV3q837fxpiZGl+qljucjT/L5N2TsbOw44O237HrbB6bT8eSk6ehUwNnxgbU5+km\nNTEt4QZQQ6CKiSH+iy+5/fffmHt44P7udOz69FHmZ6oJ+WoNufkabC1Ll8xFEZgSUGqBycuG/Byw\ndip7p6oZkfG3GbfyJHGpOcwd3Jxh7eoa2qUScTHpIhP+noCliSVLey/FybwO60/EsOrIVa6nZuPp\nZM1of2+Gta+Lg7XxRWJ3yDx2nFuff05uaCjWbdtSc+ZMrJsrK/yrIvHpOQSHJ7A/LIGDEQmMe7IB\nU3s+sNC2RCgCUwJKLTCXtsP6l8DWDVx8wPXOyxdcGoFjPTBV0rw9jL2ht5i69ixW5qb8NLINbes5\nG9qlRyI8JZzxf40HYMkzS/B18iVfreHvi7dYHhLN8ehkrM1Neb5tHcZ0rk8jd+OZT9JHqtWkbtxE\nwnffoU5JwWHwYNzfmoaZm9vDGysYLflqDWdjUgkOS2BfWDwX4tIBcLezpJufG8+1rkPnhq6l6lsR\nmBJQaoFJugyh2yExQvtKioAsvQVrphbg3EArOi464XH10YqPddlsEqzMSCn56UAU8/8IpWlte5aM\naoeHY/nv0SgPotKiGP/neHI1uSzutZimLk0Lrp2/nsaKw9FsOxuHSq3hKV83xgZ409XHrcT50yoS\n9e3bJC76keTVqzExN8fltddwHj0KE0vjXsCgcJeE27nsD08gOCyegxGJpGXnYWoiaOvlRFc/N7r7\nudOktt1jD4UqAlMCynQOJitZJzjhWsG5Iz4pV0CTf9fO1l0nOI10EY+P9r1jPTCy7L3lQU6empmb\n/+W3M9fp/0RtvhraEmuLyv3cMekxjPtrHLdVt1nUaxEt3Vrecz0xI5e1x7Q1auJv59LA1ZbRnb15\nvq3nA1mgjQFVdDS3vviSjL17Mff0xP3dd7F7ppcyP2OEqDWSszGp7A+LZ19YAv9eTwPAzc6Sbr5u\ndPNzp4uPa5kP0yoCUwIqZJJfnQcp0Vrh0Y94EsMhO+Wunanl3ainYLhNJz5WD+wjrZTcSs9hwupT\nnItJZfozvrzevVGV+dC6kXGDcX+NIzE7kYU9F9Ku1oN/e6p8DbvO3+DnkGjOxaRiZ2nGsPZ1Ge3v\nfU8tG2Mh8/Bhbn0+j9yICGzat6fmrJlYKYksDU5Sxp0oJYEDEQmkZuVhIqCNlxPd/LSi0rS2fblG\nyYrAlACDryLLTNKLeMIhMVL7NSUapPquXY2ad+d37gy3ufqAQ91KE/Wci0llwuqT3M7J55sXWtG7\nWS1Du1TmxGfFM/6v8cRlxPFdj+/o7NG5SNvT11JYERLNzn9voJaSno1r8kqAN/4NXYxKdGV+PqlB\nQSR89z3qtDQchw7F7c2pmLmWbuxe4dFRayT/xGrnUoLD4vnnehpSgmsNC7r6utPNz40nfVxxtKm4\nrN+KwJQAgwtMUeSr7kY9+sNtieGQk3rXztRSJzr6w226l6Xx5MzacuY6Mzb9g7udJUtHt6NxLePe\nK/I4JGUnMeHvCUSnRbOg2wK61u1arP3NtBx+OXqVX49fIzlTReNadozp7M1zreuUe961R0Gdlkbi\nD4tIXrMGE0tLXCdPwmnkSEwsjLeUQWUmOVPFAd1cyv7wBFKy8hACWtd1pJufO9393GnmUb5RSnEo\nAlMCjFZgikJK7WKCguG2cEjSj3r0UpfY1X4w4nG5E/VUzB4TtUby5Z9h/Lj/Mh11WYudbav+B1Ja\nbhoT/55IWHIYX3T9gl71ej20TU6emm3n4lgeEs2lG+k42pgzooMXIzvVM6oFELlRV4ifP5+M/fsx\n9/Ki5nszqNGjh1FFXZURjUby7/W0ghVf52JTkRJcbC3o6utGVz83nvJxw8lI/n4UgSkBlU5giiM/\nF5KvPDjclhQBOWl37cysdMLjc2/E4+IDlmW3jPZ2Th5vrjvL3tB4XuzoxewBzbAwM97Nk2XNbdVt\nJu+ezL+J/zK3y1yebVCyOnhSSo5dSWZ5yBX+vngLIQR9mtdibGdv2tZzMpoP8oyDh7g1bx6qy5ex\n8e9EzfdnYuXna2i3KhUpmSoORGj3pewPTyApU4UQ0NLTkW66FV8t6jgY5YpDRWBKQJUSmKKQEjIT\nHox4EiMg9ep9UY9H4cNt9p6PFPVEJ2YybtVJriRmMntgM0Z2qlcOD2b8ZOVl8cbeNzhx8wSzO89m\niM+QR2ofk5zF6qNXWXf8Guk5+bSo48DYAG/6P1EbSzPDD5/JvDxS1m8g4b//RXP7No7DAnGbOhUz\n58q1n6mi0GgkF+LSCQ6LZ19YPGdjUtFIcLIxp6tuxdeTPq5Gn9cOFIEpEdVCYIojPxeSowoXn9z0\nu3Zm1nejHv0NpS6NHoh6QiITmbzmNELADy+1KfVGrqpCTn4O04KnEXI9hFkdZzGi8YhH7iNLlc+m\n09dZEXKFywmZuNaw5KWOXrzUyQt3O8PnEFOnppLwv4WkrF2LiY0Nrq9PxvnFFxHK/AxpWXkciNCu\n+NofnkBiRi4ALT0d6OrnTnc/N57wdDTqtEKFUWYCI4RoCMRKKXN1de+fQJtGP7XYhpWAai8wRSEl\nZMQXPtyWchXQ+52xrwOuPkgXH46lu/DDeYHauRGfj+6Dl6tx7lyvaFRqFdP3T2dfzD7eafsOY5qP\nKVU/UkoORiSyPOQK+8ISMDcVDHhCm2Szhafhl7LnRkZya958Mg8dwsLbG/f3ZlCjWzejGdarCKS8\nG6UEhyVw+loKGgmONuY85eNGNz83nvJ1w7USRCnFUZYCcxZoB3gDf6Kt6eInpexXBn4aFEVgSkFe\nji7qubvCTZMYgepmKFYavbLC5jZ6UY/eEmuXRmBhfHs+yps8TR4zD87kz+g/eb3V60x8YuJjffBG\nJWSw6shVgk7GkKlS07aeE2MDvOnTrJZBE4VKKck8cIBb8+ajunIF24AA3Ka9iVnNmphYWiIsLREW\nFogKWmhSEaRl53EoIlErKuEJJNzWRikt6jgU7EtpVbfyRSnFUZYCc1pK2UYI8S6QI6X8rxDijJSy\ndVk5aygUgXl8EjNymfTLKU5EJ/NegBMTm+Zjkhx574bS1BjuiXoc6t67wu3Oe3sPqML/7ao1aj46\n/BHbLm9jXItxTG099bH/u0/PySPoZCwrD0dzLTmL2g5WjPSvx4j2XgZdcSTz8kj59VcSFv6AJj39\ngevC3FwrNpaWCEsLTCwsC45NLCyKvmZpgbDQu2ZpWcSxxV1B04laWQmclJJLN26zLyye/WEJnLqW\nglojsbcy4yndXMpTvq5GMXxZXpSlwBxDWzTsP8AAKeUVIcR5KWXzsnHVcCgC83hcjEtn/KqTJGbk\n8mVgSwa29CjcMC9bm79Nf0/PnfeqjLt25rbaRQYF+dt0wuPcsMpEPRqpYe7RuQSFB/Fyk5eZ0X5G\nmQwhqTWSfaHxLD98hZDIJCzNTBjcug5jArwNuu8oPyWFzAMH0GTnIFW5aHJzkbkqZG7uA8cald61\n3Fw0Kv339157XISeiJVE0PLMzLmZpebqbTWX01Qk5wvyTMxwdbajoaczjb1cqe/hhJm1FcJC165A\n0O4/tqj0w4ZlKTBNgdeAI1LKtUKI+sALUsp5JXCiD/Ad2oqWSwtrI4QYBsxG+y/uOSnli0KIVsAi\nwJ67lS7X6+wFMBcI1F1bJKX8Xnf+O6AfkIW2Aubp4vxTBKb07Pr3Bm9vOIeDtTmLR7XlCc9SJPGU\nEm7fLGRDaQSk3R/1eOmtcNOLfuxqV7qoR0rJFye+4JdLvxDoG8gHnT7ARJTdkFHYzdusOHyFzaev\nk5uvoXNDF8Z09qankdeoKSlSSmReXoHYyNxcNLkqpOrOe50YqXLR5OQUvC+wK0TctMd6gpabS05m\nNlkZ2aiys5G5KszVeVho8rHQzy1YSh5V4AqL2ApE6/6IrQIErlxWkQkhnIC6UsqHFvUWQpgC4UAv\nIBY4AYyQUl7Us/EBNgA9pJQpQgh3KWW8EMIXkFLKCCGEB3AKaCKlTBVCjAW6oxUQjV6bfsAbaAWm\nI/CdlLJjcT4qAvPoaDSS7/dG8O3uCFp7OfLTy21xty+HoQBVFiRffjB/W2Ik5GXetbOoca/g3KnR\nIwQIE0CU/D1oj4XQnSvqvX47iumv6D4k8N3ljSyL3s5AjyeZ03wipsK0jPzTvk/NymPz2TjWn4jl\nRnoudZxsGN6hHoPbemJvZfEQX/XuWU24nZNHSGQS+8O1E/Q30nIAaFLbvmBfSmsvR8wE9wicvrgV\nJ3aPJHDFRHNSpXrsZxUWFji/+grub75ZuvYlFJiHpnIVQgQDA3W2Z4EEIcR+KeXbD2naAYiUUkbp\n+lkHDAIu6tmMBxZKKVMApJTxuq/hdwyklHFCiHjADUgFJgEvSqndwHGnja7vVVKrmEeFEI5CiNpS\nyhsPe0aFkpGlyuedDefYdf4mQ9rU4bPBLcovnYmFDdRqoX3pIyWkxz2YQufaEfh3Q/n4Ug4I4E3A\nytGehRxEFf4HnyUkUZY5bx2BV3QvrIBsYL/u9SieFimu97/Xs9FvZ+8Bw1aDk3Hth5JSEhGfwb5Q\nraCciE4mXyOpYWnGkz6uTHvaja6+7tRyePAfKGFpCQYqYyA1mjIROJtWrcrd15LkCneQUqYLIcYB\ny6WUHwshHhrBAHWAGL3jWLSRhT6+AEKIELTDaLOllH/oGwghOgAWwGXdqYbAC0KIwUACMFVKGVHE\n/eoAisCUAbEpWYxfdYqwm+l80L8Jr3apb5hxZCHAoY721aDbvddUWaDKBKRWiKTm7nt0xw+8577z\n97UrtA+K6a+4Pu5tJ5C8JjVYxu1nQcwuVJ7t+LLBMCxMTPXaUUKfCnuuB9vdSM3mRHQSoTfS0Gg0\nNHSzpW09R7ydrdEO0pX0We7zryg/pAYu/Aa/DIFX/gRbw+6LyszNJyQykeDwBIJD44nTRSmNa9nx\n6pP16e7nTtt6TpgbccluYWJiUIF7FEoiMGZCiNrAMLQT/SWlsE+f+8fjzAAfoBvgCRwUQjS/s8dG\nd9/VwOg7EQtgiXY1WzshxBDgZ+DJEt4PIcQEYAKAl5fXIzxO9eVEdDKvrT6FKl/DsjHt6e7nbmiX\nCsfCplIuBhjbuD+Wl1rx+fHPmXprN992+xYrs/JZgVQb7XCE/+1cfj12jS+OXSXhWC4N3WwZ09mb\nIW08S12nvUhajoBVA2FNIIz+vUxTEj0MKSWXEzLYF5pAcHg8x68kk6fWRikBjVx4o6cP3fzcqO1g\nPPneqhIlmeQPBD4EQqSUk4QQDYAvpZTPP6SdP9qIpLfueCaAlPJzPZsfgaNSyhW64z3A+1LKE0II\neyAY+FxKGaTXJhToI6WM1k3sp0opHYQQPwHBUsq1OrswoFtxQ2TKHMzDWXf8Gh9uPY+nkw1LRrUz\n2rK/VYFN4Zv45MgntK/Vnv/2+C825uUvlqp8DTv+1SbZ/Cc2DTsrM4a3r8sof2/qOpfh/cN2wbqX\ntFHniHVgVn5LqLNU+RyOTCI4PJ59oQlcT80GwLdmDbr7udPVz4129ZyrVW68ssbgqWKEEGZoJ/l7\nAtfRTvK/KKW8oGfTB+3E/2ghhCtwBmgF3AZ2Ab9LKb+9r995QLiU8mddZoEvpZTthRD9gSncneT/\nXkrZoTgfFYEpmny1hrk7LrHicDRP+rjyvxFtcLAp26p4Cg/y++Xf+SDkA1q6tWRhz4XYWVRM2QUp\nJaevpbI85Aq7zt9ESsnTTWoyNqA+nRo4l81w6OlVsO0NeOIFeO7HMsvqrY1SMgtS2x+LSkal1mBj\nYUpAI9eCzY51jCgrdWWnLCf5PYH/AgFoh5wOAW9KKWOLayelzBdCTEG7+98U+FlKeUEIMQc4KaXc\nprv2jBDiItolx+9KKZOEEC8DTwEuQogxui7HSCnPAvOANUKIt4AMYJzu+k604hKJdpny2Ic9m0Lh\npGapmPLrGQ5FJvJql/rM7NvYoLvDqxMDGg7A0tSS9w68x4S/JvBjrx9xsCz/NDBCCNrWc6JtPSdu\npGWz+shV1h6/xl8Xb9G4lh1jA7wZ1Ooxa9S0GaVNQbT3U7B1g97/V+quslVqjkQlFgx9xSRro5RG\n7jUY3bke3fzcaeftZBRJQaszJRki+xv4Fe1cCMDLwEtSyocXuTBylAjmQSLjbzNu5UniUnOYO7g5\nw9rVNbRL1ZLgmGDeDn6bBg4NWPzMYpytKj5DcU6emq1nr7M8JJrQm7dxsjHnxY5ejOzkXejKqhIh\nJeyaAccXQ69PIWBqiZteSczUrvgKT+BoVBKqfA3W5qYENHKhq5873XzdynZYT6FIyjQXmZSy1cPO\nVUYUgbmXvaG3mLr2LFbmpvw0sg1t6ylp1w3J4bjDvLn3TTxqeLD0maW42bgZxA8pJUeiklgREs3f\nl25hKgR9W9RmTGdv2ng5PvrwmUYNm17Vri4b/BO0HF6oWU6emiNRSQTrROVqkjbXXQM3W7r7aUsF\nt/d2NqrKn9WFshSY3cAKYK3u1AhgrJSy5+M6aWgUgdEipeSnA1HM/yOUprXtWTKqnVFVUazOnLh5\ngil7puBq7crSZ5ZSu0Ztg/oTk5zFysPRrD8Zw+2cfFp6OjA2oD79WtR+tEnz/FxYMxSuHoYR68Hn\naUBbS+hO0sgjl5PIzddgZW5C54a6uRRfd7xclCjF0JSlwHgB/wP80c7BHEa79+RaWThqSBSB0f6X\nOHPzv/x25jr9n6jNV0NbYm2h/EdoTJyNP8vk3ZOxs7Bjae+l1LUz/LBlZm4+m07HsiIkmqjETNzs\nLHm5Yz1e7OiFm10J92fkpKNZ3g+ZGMnPjf7Lr9fduJKozdJQ39W2YHK+Y30lSjE2ynUVmRBi2v2r\nuyoj1V1gbqXnMGH1Kc7FpDL9GV9e796o0ifhq6pcTLrIhL8nYGliydLeS6nvUN/QLgHa1EEHIhJY\nHhLN/vAELExNGNDSg7EB3jSvU/jihGtJWQTr0rGEX45kjfgIO5HNF3W+o3GzNnTzc8fb1baCn6T6\noZGaUufAK2+BuSalrPS7FKuzwJyLSWXC6pPczsnnmxda0btZLUO7pPAQwlPCGf/XeASCJc8swcfJ\nx9Au3cPlhAxWHo5m46lYslRq2ns7MTagPt383Dh1NaVgxVdUgjZKqediQ3c/d/p4ZNFx3wiEmTW8\n+hfYG3YYsCqjUqv4M/pP1oWt49kGz5aqwiqUv8DESCkNH6c/JtVVYLacuc6MTf/gbmfJ0tHtDJrO\nXeHRiEqLYvyf41FpVPzU6yeaujQ1tEsPkJadR9DJGFYeiSYmORshtIvHLMxM6NTAhW6+bnRv7E59\n/Sgl7gyseBYc68HYnWBdiuzcCkUSlxHHhrANbI7YTEpuCt723kxqOYl+DUpXN1KJYEpAdRMYtUby\n5Z9h/Lj/Mh3rO7Po5bY4G7AolULpiEmPYdxf47itus2iXoto6dbS0C4Viloj2XPpFqevpdKhvhP+\nDVyLn9+7vE+bTqZuB3h5M5hX3YJdFYFGajgad5S1YWs5EHsAgG6e3RjeeDgda3d8rBIRjy0wQojb\nFJLLC23OL2spZRknLKp4qpPA3M7J4811Z9kbGs+LHb2YPaCZkiqjEnMj4wbj/hpHYnYiC3supF2t\nh/6tVw7+3ahdwtxkAASuBBNlcv9RSctNY2vkVjaEb+Bq+lWcrZx53ud5An0Dy2wVosFTxVQGqovA\nRCdmMm7VSa4kZjJ7YDNGdjKutOkKpSM+K57xf40nLiOO73p8R2ePzoZ2qWw4ugj+eB/ajoVnv6l2\ndWlKS2hyKOtC17Ejagc56hxaubVieOPh9KrXCwvTsh2pKLNUMQqVm5DIRCavOY0QsPrVDnRuaNh0\n6Qplh7uNOz/3/pkJf0/gjT1vsKDbArrW7Wpotx6fTpMg4xYc+gbsakG39w3tkdGiUqv46+pfrAtd\nx7mEc1iZWtG/QX+GNx5OY+fGhnZPiWCqagQjpWTl4Wg+3XGJhm62LB3VXtmgVkVJy01j4t8TCUsO\n44uuX9CrXqXP4qRdFbB1Cpz9RRvFtHvF0B4ZFTcybhAUHsSmiE0k5yRTz74eL/i9wKBGg7C3KP9F\nO8oQWQmoqgKjytfw8bbzrD0ew9NNavLt8FbUKOsaHwpGxW3VbSbvnsy/if8yt8tcnm3wrKFdenzU\n+bDuRYj8Wzsf03SgoT0yKBqp4eiNo6wLXcf+WG1Z0qc8n2KE3wg6eXR6rEn7R0UZIqumJGbkMumX\nU5yITmFK90a83csXExNlDLuqY2dhx0+9fuKNvW8w6+AsVGoVQ3yGGNqtx8PUDAJXaIuVbRoHNpvB\nu4uhvapw0lXpbIvcxvqw9USnR+Ns5cwrzV8h0DcQjxoehnavWEqSKqaw1WRpwEngHSllVDn5Vu5U\ntQjmYlw641edJDEjly8DWzKwpXH/8imUPTn5OUwLnkbI9RBmdZxV6o10RkVWMvzcB27f1O6RqdXc\n0B5VCGHJYawL007aZ+dn84TbEwz3G05v795lPmn/qJRlLrJPgDi0KfsFMByoBYQBk6SU3R7bWwNR\nlQRm1783eHvDORyszVk8qi1PeCob1aorKrWK6funsy9mH++0fYcxzccY2qXHJzUGlj0DUqPd7e9U\nNVdC5qnz+Pvq36wLW8eZ+DNYmVrRr0E/XvB7wag21ZalwByTUna879xRKWUnIcQ5KaVx7vIqAVVB\nYDQayfd7I/h2dwSt6jqyeGRb3O2VDWrVnTxNHrMOzuKP6D94vdXrTHxiYuXPMxd/CX7urS1W9spf\nYOtiaI/KjJuZN9kQtqFg0t7LzothfsN4rtFzFVJw7lEpyzkYjRBiGLBRdzxU71r1XSFgBGSp8nln\nwzl2nb/JkDZ1+GxwCyXrrAIA5ibmzHtyHhamFiw8u5BcdS5TW0+t3CLj3kSb2n/1c/BrIIz+HSwq\nb1JMKSXHbh5jXeg6gmOC0UgNXT27MrzxcPw9/Ct00r68KInAvAR8B/ygOz4CvCyEsAamFNdQCNFH\n19YUWCqlnFeIzTBgNlqxOielfFEI0QpYBNijLaX8f1LK9Tr7FUBXtPNAoCulLIToBmwFrujOb5ZS\nzinB81VKYlOyGL/qFGE30/mgfxNe7VK/cn94KJQ5piamfBrwKZamliz9dyk5+TnMaD+jcv+e1POH\nocth/UuwYRSMWAem5ob26pG4rbrNtsvbWBe6juj0aBwtHRndbDTD/IZRp0YdQ7tXpjxUYHST+AOK\nuHyoqHZCCFNgIdALiAVOCCG2SSkv6tn4ADOBACllihDCXXcpCxglpYwQQngAp4QQf0opU3XX35VS\nbuRBDkopq8D6zOI5EZ3Ma6tPocrXsGxMe7r7uT+8kUK1xESY8GGnD7E0teSXS7+Qq87lg04fVO7/\njhv3g2e/hd+navfKPLcITIz/ecJTwlkXuo7tUdu1k/auT/B/Xf6P3t69sTQtYQ2dSsZDBUYI4Qn8\nF2cZ+CkAAB+xSURBVAhAG2UcAt6UUsY+pGkHIPLOKjMhxDpgEHBRz2Y8sFBKmQIgpYzXfQ2/YyCl\njBNCxANuQCrVnHXHr/Hh1vN4OtmwZFQ7GrnXMLRLCkaOEIIZ7WdgaWrJsvPLyFXnMqfzHEwrc56v\ntqMhMx72zoUa7vDMp4b2qFDy1HnsvrabdaHrOB1/GktTS/rW78vwxsNp5tLM0O6VOyUZIluOdgVZ\noO74Zd25h20XrgPE6B3HAh3vs/EFEEKEoB1Gmy2l/EPfQAjRAbAALuud/j8hxEfAHuB9KWWu7ry/\nEOIc2lVv06WUFx7+eJWDfLWGuTv+v707D4+izPo+/j3ZCDtoIrKDEoKKyBJFBQUGQRYfkcUQFBBE\n0FEEH8cNL2Z03GZGHx03RkWcQdYgIJuMAgouAyKbKMoaFgFZQhCQECCEnPePKnh7QjANpLq6yflc\nV650V9/V9WugOF13Vd33GkYv2sINSQm82aspFctEVteA8Y+IMLTpUOJj4hmxcgS5x3N54YYXiI2K\n4H9DNzwCB3fDotedInP9g34nOmnXoV1MWT+FqRumknU4ixrlavBIyiN0ubQLleJLzhWewRSYRFX9\nV8Dz0SLyUBDrFdbRW/CigBggCWgN1AC+EpGGJ7rCRKQqMBa4S1Xz3XWGAbtwis5I4HHgGWAFUFtV\ns0WkEzDdfe//DiUyCBgEUKtWZMw4sD8nl8ETvuU/GVkMaFmXYR0bEBMd/l0CJryICPdddR+lokvx\nyvJXyD2ey0utXvL9noqzJgId/waH9sDc4VD2Iriqp29xVJUlu5aQvjadBdsWkK/53FDjBtKS02hR\nvUVkd0uepWAKTJaI9AYmus97AXuDWG87EDgpWQ2cI4uCbRar6jFgs4iswykKS0WkAjAbGK6qi0+s\noKo73YdHReRfwCPu8l8D2vxbRP4hIgmqmhW4QVUdiVOYSElJCfur4DIyD3LP+8vYsf8IL/ZoRGpK\nxM/zZnzWv2F/SkWX4i9L/sKQBUN4tfWrxMdE6KXtUdHQbSTk7IUZ9zuXLte7KaQRsnOzmbnRudN+\n04FNVCpVib5X9OX2+rdTs3zJ3l+DKTB3A28Cf8c5AlkE9A9ivaVAkojUBX7GuUHzjgJtpuMUrNEi\nkoDTZbZJROKAacAYVZ0cuIKIVFXVneJcCnMb8IO7/GJgt6qq260WRXCFMGzNX7ubIRNXEh8bzcRB\nzWlW+wK/I5nzxB2X3UGp6FL8+es/88BnD/DG796gTGyEDoYaUwrSxsPozjCpL/SbBdWbeb7ZDfs2\nkL42nVmbZnE47zANL2zIcy2e4+Y6N0duwS5mwVxFthX4r1Hm3C6yV4tYL09EBgNzcM6v/FNVfxSR\nZ4BlqjrTfa29iKzGuRz5UVXd6x4x3QhcKCL93Lfsp6orgfEikojTBbcSuM99vQfwexHJAw4DaRqh\nI3mqKu98uYm/fbKWy6tW4N2+KVSrVNrvWOY8071+d+Ki4xi+cDj3fXofI9qOoHxceb9jnZ34inDn\nVHivnTMr5t1zIaFesW/mWP4xPtv6Gelr01m+ezlxUXEnT9o3TCgZQ9icCZsyOczu5D9y7DjDPlzF\ntG9/pnOjqvxfj6t+e5pZY87R3C1zefzLx2lwQQPebvd2WN45HrS9G50hZeLKwIB5znwyxWD3od1M\n2TCFKeunkHU4i+rlqtMzuSdd63UtUSftT/B0uH4R2aaqEd+5GG4FZvevRxg0djnfbdvPI+3r80Cb\nepF9U5yJGJ9v+5yHP3+YSypewsj2I7kgPoK7Y39eAaNvgQvqOoNjxp9dwVRVlu1exsS1E5m/dT75\nmk/L6i1Ja5BGi2otIvsy73PkdYGxI5hitnLbfgaNWUb20Tz+3rMxN19RPN+8jAnWoh2LGDp/KNXK\nVWNU+1Eklkn0O9LZ2zgfxqdCzebQeyrEBn9OJDs3m1mbZjFp7SQ2HthIxVIV6VqvK6n1U6lZIeK/\nVxeLcy4wpxmmH5xzH6VVNeLnkgmXAjP92595bOr3XFS+FKPuSqHBxd7PSGdMYZbuWsrgzwaTUDqB\nUe1HUbVcVb8jnb1VU2DqALjsVmdemSKOODL2ZZC+Lp1ZG2eRk5fD5RdeTlpyGh3rdrST9gXYjJZB\n8LvAHM9XXpqzjre/2EjzuhfwVu9mXFA2Qu9JMOeNlZkruf/T+ykfV55RN4+K7Ettv/4HzBnmTLnc\n+RXn3pkAx/KPMX/rfCatm8TSXUuJi4qjQ90OpCWncWXilT6FDn9WYILgZ4E5eOQYQ9NXMn9tJnc0\nr8XT/3MFcTEl70YsE55W713NoHmDnIEy24+ibsW6fkc6e/OegoWvQusnofXjAOzJ2cOU9c5J+8zD\nmVQrW43U5FS6JXWjcnxlnwOHPyswQfCrwGzJOsQ9Y5axOesQT996BX2uPT8nTzKRbf2+9QycOxBB\neLf9uyRVPmVgjMigCtPvR7+bwLI2fyBdDzB/63zyNI8W1VvQK7kXLau3LNEn7c+UFZgg+FFgFmZk\ncf/4FYjAP+5syvWXJoR0+8aciU0HNjFwzkBy83N5p907YTWrYrAOHTvERxkzSF/yChkcpXx0PF2T\nU+mZ3JNaFSL+WiVfBFtgrE8mRFSV0Qs30/efS6hSoRQzH2hpxcWEvUsqXsLoDqMpE1OGe+bcw3d7\nvvM7UtA27t/I84ufp+3ktjy35C/EVq7DM3nl+WzLTzyaeL0VlxCwI5gQHMHk5uXzpxk/kL50Gzdd\nVoVX0xpTrlTEX4RnSpCd2Tu5Z+49ZB3OYkTbEaRcXOSXV1/k5eexYNsC0tems2TXEmKjYulQpwM9\nG/SkUUIj5PA+Z9rlg7vh7o+hyvk/ZL4XrIssCKEoMFnZR/n9uOUs3bKPB9pcyh/aJRMVZTdPmsiT\nmZPJwLkD2ZG9g9d+9xrXV7ve70gn7cnZc/JO+8ycTKqWrXrypP0pN43u3+bc7Y/CgLlQyY5kzpQV\nmCB4XWB+3HGAQWOWk5V9lBd7NKJL4/NrOlRT8uw9vJdB8wax5cAWXmn9Cq1qtvIti6qyInMF6WvT\n+fSnT8nTPK6vdj1pyWncWOPG3z5pv3s1/KuDM8T/3XOcUZhN0KzABMHLAvPxqp08/MF3VCwdy8i+\nzWhUo+SNV2TOTweOHuDeefey7pd1vNjqRdrVLmruweKVcyyHjzZ9RPq6dDbs20D5uPLcVu82eib3\npHaFM7gi86dFMLYrVGkId82EuLLehT7PWIEJghcFJj9feX3+Bl79dAONa1ZiZJ9mXFTB7gI255eD\nuQe5/9P7WZW1iudaPsctl9zi+TY3HdjEpLWTmLlxJtnHsmlwQQPSktPodEknSsec5Wjja2fDpN5w\naVvoNRGiI3iGzxAKtsDYmeZilJObxx8++I6Pf9hFt6bVeaHrlcTH2rX15vxTPq4877R7hwfnP8iT\nXz1J7vFcuiV1K/bt5OXn8fm2z0lfl843O78hNiqW9nXak5acxlWJV537YLANOsMtf4dZQ2Hmg3Db\nW6fc7W/OnhWYYrJ9Xw4Dxyxn3a5fGd75Mga0rGsjIZvzWpnYMoxoO4KHPn+IpxY9xdHjR+nVoFex\nvHfW4Symrp/K5PWT2Z2zm4vLXsyQJkPoltSNC0sX8/mSZv0gOxMWPA/lLoJ2zxTv+5dgVmCKwdIt\nv3Df2OXk5uXzXr+raZN8kd+RjAmJ+Jh4Xm/zOo988QgvfPMCR/OO0q9hv7N6L1Xl28xvSV+Xzryf\n5pGXn8d1Va9jWPNhtKrRipgoD/+7uvFRyN4NC1+DclXguge821YJYgXmHKUv2cofZ/xAjcpleLdv\nCvUuKud3JGNCKi46jpdbv8yTXz3Jy8tf5sjxI9zb6N6gj+BzjuUwe/Ns0tems37fesrHlictOY3U\n5NTQjYEmAh1fhEN7YM6TUDYRGqWGZtvnMU8LjIh0AF7DmTJ5lKr+tZA2qcDTOFMDfKeqd4hIY+At\noALOVMrPq+okt/1ooBVwwH2Lfqq6Upx/za8BnYAcd/kKrz5b3vF8npu9htGLtnBDUgJv9mpKxTJ2\ngtCUTLFRsfz1hr8SFx3HiJUjOHr8KEOaDPnNIrP5wGYmrZvEjIwZZB/LJrlyMk9d9xSd6naiTGyZ\nEKZ3RUVD15GQ8wtM/z2UuRDqtQ19jvOIZwVGRKKBEUA7YDuwVERmqurqgDZJwDCgharuE5ETfUs5\nQF9V3SAi1YDlIjJHVfe7rz+qqlMKbLIjkOT+NMcpUM29+Gz7c3IZPOFb/pORxYCWdRnWsQEx0Tbq\njinZoqOiebbFs84IzKtGcSTvCI9d/dh/FZm8/Dy+2P4F6WvTWbxzMTFRMbSr3Y5eDXrROLGx/+ct\nY+MhbTz8qzNM6gP9ZkH1Zv5mimBeHsFcA2So6iYAEUkHugCrA9oMBEao6j4AVc10f68/0UBVd4hI\nJpAI7Of0ugBj1LnuerGIVBKRqqq6szg/FMAX6/ewZPMvvNijEakpETxXhjHFLEqi+OO1f6RUdCnG\nrRnH0eNHGX7tcH458gsfbviQyesns+vQLqqUqcKDTR6kW1I3EkqH2Zh88RWh9xR4rx2Mvx3ungsJ\n9fxOFZG8LDDVgW0Bz7dz6hFFfQARWYjTjfa0qn4S2EBErgHigI0Bi58XkT8BnwFPqOrR02yvOlDs\nBaZL4+o0rVWZmhf4cBhvTJgTER67+jHiY+IZtWoUP2T9wIb9G8jLz6N51eY8cfUTtKrp8Un7c1X+\nYugz3RlSZlxXGDDPWWbOiJd/w4Ud6xa8qzMGp0urNVAD+EpEGp7oChORqsBY4C5VzXfXGQbswik6\nI4HHgWeC3B4iMggYBFCr1tmPQWTFxZjTExGGNBlC6ZjSjFs9jtT6qfRs0JNLKl7id7TgXXgp3DkZ\nRt8C43pA/9nO0Y0JmpcnDrYDgf1HNYAdhbSZoarHVHUzsA6n4CAiFYDZwHBVXXxiBVXdqY6jwL9w\nuuKC3R6qOlJVU1Q1JTEx8Zw+oDHm9ESEQY0G8WXalwxrPiyyissJ1ZtCz7GwZw2k3wnHjvidKKJ4\nWWCWAkkiUldE4oA0YGaBNtOBNgAikoDTZbbJbT8N55zK5MAV3KMa3KvGbgN+cF+aCfQVx7XAAS/O\nvxhjSph6bZ07/Ld8BdMGQf5xvxNFDM8KjKrmAYOBOcAa4ANV/VFEnhGRW91mc4C9IrIaWIBzddhe\nIBW4EegnIivdn8buOuNFZBWwCkgAnnOX/xvYBGQA7wL3e/XZjDElTKNUuPkFWD0DPn7MmYbZFMkG\nuwzxlMnGmAg294+w6HVoMxxaPep3Gt/YYJfGGFPcbvqzc7f/guegXKIzjpk5LSswxhgTrKgouPUN\nOJQFH/2vM6RMg85+pwpbdvu5McaciehYSH0fqjWFKXc7E5eZQlmBMcaYMxVXFu74ACrWhIlpzhTM\n5hRWYIwx5myUvRD6fAixZWBcN9i/1e9EYccKjDHGnK1KtaD3VMjNgbHdnJGYzUlWYIwx5lxUuQJ6\nTXSOYMbfDrmH/E4UNqzAGGPMuarTAnr8E3asgMn94PgxvxOFBSswxhhTHC67BTq/Ahvmwswhdrc/\ndh+MMcYUn5T+kJ0Jn78A5S6Cdn/2O5GvrMAYY0xxavUYZO+Gha9CuSpwXckdFtEKjDHGFCcR6PSS\nM6TMnGHOkcyVPfxO5Qs7B2OMMcUtKhq6vQu1W8K0+2DjfL8T+cIKjDHGeCE2HnpNgMRkmNQHfl7h\nd6KQswJjjDFeia8Id06BMhc498js3eh3opCyAmOMMV6qUBV6TwMUxnaFg7v9ThQyVmCMMcZrCfXg\njsnOMP/ju8ORX/1OFBKeFhgR6SAi60QkQ0SeOE2bVBFZLSI/isgEd1ljEfnaXfa9iPQsZL03RCQ7\n4Hk/EdkTMMXyPd59MmOMOUM1mkHPMZC5BtLvgLyjfifynGcFRkSigRFAR+ByoJeIXF6gTRIwDGih\nqlcAD7kv5QB93WUdgFdFpFLAeilAJU41SVUbuz+jiv1DGWPMuah3E9z2Fmz5Cj4cBPnH/U7kKS+P\nYK4BMlR1k6rmAulAlwJtBgIjVHUfgKpmur/Xq+oG9/EOIBNIhJOF6yXgMQ+zG2OMNxqlQvvnYfV0\n+Pjx83pIGS8LTHVgW8Dz7e6yQPWB+iKyUEQWi0iHgm8iItcAccCJyy8GAzNVdWch2+zudqlNEZGa\nhYUSkUEiskxElu3Zs+dMP5Mxxpy76wfD9Q/C0nfhq//zO41nvCwwUsiygqU6BkgCWgO9gFEFusKq\nAmOB/qqaLyLVgNuBNwp571lAHVVtBHwKvF9YKFUdqaopqpqSmJh4hh/JGGOKyU3PQKM0mP8cLC/0\nv6uI52WB2Q4EHkXUAHYU0maGqh5T1c3AOpyCg4hUAGYDw1V1sdu+CVAPyBCRLUAZEckAUNW9qnri\nrNm7QLPi/0jGGFNMoqKgy5vOeZmPHoK1//Y7UbHzssAsBZJEpK6IxAFpwMwCbaYDbQBEJAGny2yT\n234aMEZVJ59orKqzVfViVa2jqnWAHFWt565fNeB9bwXWePS5jDGmeETHwu3vQ7UmMKU/bF1c9DoR\nxLMCo6p5OOdL5uD8Z/+Bqv4oIs+IyK1usznAXhFZDSwAHlXVvUAqcCPQL+Cy48ZFbHKIe1nzd8AQ\noJ8HH8sYY4pXqXLOPTIVa8CEVOcy5vOE6Hl8BUNRUlJSdNmyZX7HMMYY2PcTvNceJAoGzIVKhV6n\nFBZEZLmqphTVzu7kN8aYcFC5NvSeCrmHYFx3yPnF70TnzAqMMcaEi4sbQq+JsG+L012We8jvROfE\nCowxxoSTOi2g+yj4eTlM7g/Hj/md6KxZgTHGmHBz+a3Q+WXYMAdmDY3Yu/1tymRjjAlHKXdDdiZ8\n/hdn2uWbnvY70RmzAmOMMeGq1eNwcBf85+9Qrgpc+3u/E50RKzDGGBOuRJyuspws+OQJKJsIV/bw\nO1XQ7ByMMcaEs6ho6DYKareAaffBxgV+JwqaFRhjjAl3sfGQNgES6sOk3rDjW78TBcUKjDHGRILS\nlZwbMUtfAONvh70bi17HZ1ZgjDEmUlSoCn0+dGbCHNcNDu72O9FvsgJjjDGRJCEJ7pziXMI8vjsc\n+dXvRKdlBcYYYyJNjWaQOtYZeXnSnZB3tOh1fGAFxhhjIlHSTdBlBGz+EqbdC/n5fic6hd0HY4wx\nkeqqNKerbN4fnXtkOr7o3DsTJqzAGGNMJGsxBLJ3w9dvOnf73/iI34lO8rSLTEQ6iMg6EckQkSdO\n0yZVRFa7s1FOcJc1FpGv3WXfi0jPQtZ7Q0SyA56XEpFJ7ra+EZE6Xn0uY4wJK+2ehUY9Yf6zsGKM\n32lO8uwIRkSigRFAO2A7sFREZqrq6oA2ScAwoIWq7hORi9yXcoC+qrpBRKoBy0Vkjqrud9dLASoV\n2OQAYJ+q1hORNOBvwCmFyRhjzjtRUc75mENZzujLZRMhuaPfqTw9grkGyFDVTaqaC6QDXQq0GQiM\nUNV9AKqa6f5er6ob3Mc7gEwgEU4WrpeAxwq8VxfgfffxFKCtSBh1RhpjjJeiYyF1DFRtDJP7wdZv\n/E7kaYGpDmwLeL7dXRaoPlBfRBaKyGIR6VDwTUTkGiAOOHHb6mBgpqruPN32VDUPOABceM6fwhhj\nIkWpcnDnZKhQ3ZkRM3ONr3G8LDCFHT0UnDUnBkgCWgO9gFEicrLrS0SqAmOB/qqa73aX3Q68cZbb\nQ0QGicgyEVm2Z8+eoD6IMcZEjLIJ0GcaxMTDuO5wYLtvUbwsMNuBmgHPawA7CmkzQ1WPqepmYB1O\nwUFEKgCzgeGqutht3wSoB2SIyBagjIhkFNyeiMQAFYFfCoZS1ZGqmqKqKYmJief+KY0xJtxUru2M\nW3b0IIztBjmn/FcYEl4WmKVAkojUFZE4IA2YWaDNdKANgIgk4HSZbXLbTwPGqOrkE41VdbaqXqyq\ndVS1DpCjqvXcl2cCd7mPewDzVSN0nlFjjDlXFzeEXhNh3xaY0BNyc0IewbMC454HGQzMAdYAH6jq\njyLyjIjc6jabA+wVkdXAAuBRVd0LpAI3Av1EZKX707iITb4HXOge0TwMFHpZtDHGlBh1WkL3d2H7\nUpjSH47nhXTzUpK/5KekpOiyZcv8jmGMMd5a+h7Mfhia9IZb3zznu/1FZLmqphTVzu7kN8aY893V\nA5whZb74q3O3f9s/hWSzVmCMMaYkaP0EZO+Cr152ikzzez3fpBUYY4wpCUSg8yvO3f4fP+5cztyw\nu6ebtOH6jTGmpIiKhu7vQd0bQjKHjB3BGGNMSRIbD31mOOOXecyOYIwxpqQJQXEBKzDGGGM8YgXG\nGGOMJ6zAGGOM8YQVGGOMMZ6wAmOMMcYTVmCMMcZ4wgqMMcYYT5To0ZRFZA/wk985AiQAWX6H+A3h\nng/CP2O45wPLWBzCPR+cW8baqlrkjI0lusCEGxFZFswQ2H4J93wQ/hnDPR9YxuIQ7vkgNBmti8wY\nY4wnrMAYY4zxhBWY8DLS7wBFCPd8EP4Zwz0fWMbiEO75IAQZ7RyMMcYYT9gRjDHGGE9YgQkxEekg\nIutEJENEnjhNm1QRWS0iP4rIhHDLKCK1RGSBiHwrIt+LSKcQ5/uniGSKyA+neV1E5HU3//ci0jSU\n+YLMeKeb7XsRWSQiV4VTvoB2V4vIcRHpEapsAdsuMqOItBaRle6+8kU45RORiiIyS0S+c/P1D2U+\nN0NNd19d42YYWkgb7/YXVbWfEP0A0cBG4BIgDvgOuLxAmyTgW6Cy+/yiMMw4Evi9+/hyYEuIM94I\nNAV+OM3rnYCPAQGuBb7x4e+6qIzXB/wddwx1xqLyBfxbmA/8G+gRhn+GlYDVQC33eaj3laLyPQn8\nzX2cCPwCxIU4Y1Wgqfu4PLC+kP3Zs/3FjmBC6xogQ1U3qWoukA50KdBmIDBCVfcBqGpmGGZUoIL7\nuCKwI4T5UNUvcXbW0+kCjFHHYqCSiFQNTTpHURlVddGJv2NgMVAjJMH+//aL+jMEeBCYCoT63yAQ\nVMY7gA9VdavbPqQ5g8inQHkREaCc2zYvFNlOBlDdqaor3McHgTVA9QLNPNtfrMCEVnVgW8Dz7Zz6\nl10fqC8iC0VksYh0CFk6RzAZnwZ6i8h2nG+3D4YmWtCC+QzhZADON8iwISLVga7A235n+Q31gcoi\n8rmILBeRvn4HKuBN4DKcL2CrgKGqmu9XGBGpAzQBvinwkmf7S0xxvIkJmhSyrOBlfDE43WStcb7V\nfiUiDVV1v8fZTggmYy9gtKq+LCLXAWPdjL7tPAUE8xnCgoi0wSkwLf3OUsCrwOOqetz5Ah6WYoBm\nQFugNPC1iCxW1fX+xjrpZmAl8DvgUmCeiHylqr+GOoiIlMM5Gn2okO17tr9YgQmt7UDNgOc1OLV7\naTuwWFWPAZtFZB1OwVkamohBZRwAdABQ1a9FJB5nXCNfulIKEcxn8J2INAJGAR1Vda/feQpIAdLd\n4pIAdBKRPFWd7m+s/7IdyFLVQ8AhEfkSuArnPEM46A/8VZ0THRkishloACwJZQgRicUpLuNV9cNC\nmni2v1gXWWgtBZJEpK6IxAFpwMwCbaYDbQBEJAGnG2BTmGXcivOtERG5DIgH9oQwY1FmAn3dq2Ou\nBQ6o6k6/QwUSkVrAh0CfMPrGfZKq1lXVOqpaB5gC3B9mxQVgBnCDiMSISBmgOc45hnARuJ9UAZIJ\n7b6Me/7nPWCNqr5ymmae7S92BBNCqponIoOBOThX6PxTVX8UkWeAZao6032tvYisBo4Dj4by222Q\nGf8AvCsi/4tzKN3P/ZYWEiIyEacLMcE9D/QUEOvmfxvnvFAnIAPIwfkmGVJBZPwTcCHwD/coIU9D\nODhiEPl8V1RGVV0jIp8A3wP5wChV/c3LrkOZD3gWGC0iq3C6oR5X1VCPsNwC6AOsEpGV7rIngVoB\nOT3bX+xOfmOMMZ6wLjJjjDGesAJjjDHGE1ZgjDHGeMIKjDHGGE9YgTHGGOMJKzDGGGM8YQXGGJ+I\nSD8RebOY3muLe2NuUe2yi2N7xgTDCowxZ8i949n2HWOKYDuJMUEQkTrupE3/AFYAfUTkaxFZISKT\n3cEEEZFOIrJWRP7jTuL0UZDv/z8i8o04k7h96g4tgog8LSLvi8hc9yilm4i8KCKrROQTd5ypEx4V\nkSXuTz13/bpuzqUi8mzA9sqJyGdu/lUiUnBKBmPOmRUYY4KXDIwB2uEM+HmTqjYFlgEPu4N+voMz\neGVLnEmmgvUf4FpVbYIzB89jAa9dCnTGmbdjHLBAVa8EDrvLT/hVVa/BGSb+VXfZa8Bbqno1sCug\n7RGgq5u/DfCyhPGwySYyWYExJng/uRMyXYszk+dCd3ynu4DaOCPlblLVzW77iWfw3jWAOe64VY8C\nVwS89rE7uvYqnPHhPnGXrwLqBLSbGPD7Ovdxi4DlYwPaCvCCiHwPfIoz/0eVM8hrTJFssEtjgnfI\n/S3APFXtFfiiiDQ5h/d+A3hFVWeKSGucSd1OOAqgqvkicixgYNF8/nsf1iAen3AnzhFWM1U9JiJb\ncEbFNqbY2BGMMWduMdAi4DxHGRGpD6wFLnFnDgToeQbvWRH42X1811nm6hnw+2v38UKcKRfAKSqB\n28t0i0sbnCMwY4qVHcEYc4ZUdY+I9AMmikgpd/FwVV0vIvcDn4hIFmc2sdTTwGQR+RmngNU9i2il\nROQbnC+OJ46uhgITRGQozqRTJ4wHZonIMpxZF9eexfaM+U02XL8xxUhEyqlqtnvCfASwQVX/7ncu\nY/xgXWTGFK+B7on/H3G6od7xOY8xvrEjGGM8JiL9cbqqAi1U1Qf8yGNMqFiBMcYY4wnrIjPGGOMJ\nKzDGGGM8YQXGGGOMJ6zAGGOM8YQVGGOMMZ74f7xM9si+ELu6AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa6eadb550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = gsearch3_4.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_4.cv_results_[ 'std_test_score' ]\n",
    "\n",
    "\n",
    "pd.DataFrame(gsearch3_4.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_２.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(4, 4)\n",
    "\n",
    "\n",
    "for i, value in enumerate([0.001, 0.1, 0.01,1]):\n",
    "    plt.plot([0.5, 1, 1.5,2], -test_scores[i], label= 'reg_alpha:'   + str(value))\n",
    "plt.legend()\n",
    "plt.xlabel( 'reg_lambda' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 发现最大此时最佳参数为{'reg_alpha': 0.01, 'reg_lambda': 2}，且图像在reg_lambda为1.５后一直在下降,因此尝试扩大reg_lambda为［1,10,100］，reg_alpha为[0.005,0.01,0.1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.62445, std: 0.00537, params: {'reg_alpha': 0.005, 'reg_lambda': 2}, mean: -0.62627, std: 0.00452, params: {'reg_alpha': 0.005, 'reg_lambda': 4}, mean: -0.62703, std: 0.00675, params: {'reg_alpha': 0.005, 'reg_lambda': 6}, mean: -0.62384, std: 0.00522, params: {'reg_alpha': 0.01, 'reg_lambda': 2}, mean: -0.62729, std: 0.00453, params: {'reg_alpha': 0.01, 'reg_lambda': 4}, mean: -0.62685, std: 0.00557, params: {'reg_alpha': 0.01, 'reg_lambda': 6}, mean: -0.62581, std: 0.00468, params: {'reg_alpha': 0.1, 'reg_lambda': 2}, mean: -0.62691, std: 0.00342, params: {'reg_alpha': 0.1, 'reg_lambda': 4}, mean: -0.62715, std: 0.00480, params: {'reg_alpha': 0.1, 'reg_lambda': 6}]\n",
      "best_params-------------->\n",
      "{'reg_alpha': 0.01, 'reg_lambda': 2}\n",
      "best_score--------------->\n",
      "-0.6238440230516141\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "param_test3_3 = {\n",
    " 'reg_lambda':[2,4,6],\n",
    " 'reg_alpha':[0.005,0.01,0.1]\n",
    "}\n",
    "xgb3=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.1, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=103,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch3_5 = GridSearchCV(xgb3, param_grid = param_test3_3, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_5.fit(X_train , y_train)\n",
    "print \"grid_scores-------------->\"\n",
    "print gsearch3_5.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch3_5.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch3_5.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nnHPOReL/Abv2s2C+qhwGAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa72c67850>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = gsearch3_5.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_5.cv_results_[ 'std_test_score' ]\n",
    "\n",
    "\n",
    "pd.DataFrame(gsearch3_5.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_２.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(3, 3)\n",
    "\n",
    "\n",
    "for i, value in enumerate([0.005,0.01,0.1]):\n",
    "    plt.plot([2, 4,6], -test_scores[i], label= 'test_max_depth:'   + str(value))\n",
    "plt.legend()\n",
    "plt.xlabel( 'min_child_weght' )                                                                                                      \n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig('max_depth_vs_min_child_weght_1.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 正则参数调整: reg_alpha(L2)和reg_lambda(L0)，对模型性能影响不大，有一点的提高，最佳参数取best_params-------------->{'reg_alpha': 0.01, 'reg_lambda': 2}，最佳ｌｏｇｌｏｓｓ为0.6238440230516141"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [],
   "source": [
    "#重新调整弱学习器数目\n",
    "xgb4 = XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.01, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=2000,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "modelfit(xgb4, X_train, y_train, cv_folds = kfold)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
      "       colsample_bytree=0.8, gamma=0, learning_rate=0.01, max_delta_step=0,\n",
      "       max_depth=5, min_child_weight=1, missing=None, n_estimators=2000,\n",
      "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
      "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3,\n",
      "       silent=True, subsample=0.3)\n",
      "              test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "n_estimators                                                               \n",
      "0                       1.092807           0.000136             1.092591   \n",
      "1                       1.087142           0.000147             1.086710   \n",
      "2                       1.081575           0.000117             1.080913   \n",
      "3                       1.076051           0.000131             1.075136   \n",
      "4                       1.070697           0.000129             1.069460   \n",
      "5                       1.065312           0.000076             1.063879   \n",
      "6                       1.060108           0.000155             1.058475   \n",
      "7                       1.054980           0.000153             1.053080   \n",
      "8                       1.049955           0.000133             1.047823   \n",
      "9                       1.044996           0.000151             1.042601   \n",
      "10                      1.040066           0.000215             1.037459   \n",
      "11                      1.035195           0.000248             1.032386   \n",
      "12                      1.030406           0.000243             1.027320   \n",
      "13                      1.025684           0.000315             1.022381   \n",
      "14                      1.021013           0.000340             1.017461   \n",
      "15                      1.016409           0.000265             1.012618   \n",
      "16                      1.011964           0.000231             1.007970   \n",
      "17                      1.007564           0.000252             1.003368   \n",
      "18                      1.003135           0.000266             0.998672   \n",
      "19                      0.998846           0.000302             0.994110   \n",
      "20                      0.994573           0.000335             0.989610   \n",
      "21                      0.990377           0.000261             0.985194   \n",
      "22                      0.986251           0.000292             0.980822   \n",
      "23                      0.982097           0.000306             0.976458   \n",
      "24                      0.978043           0.000300             0.972206   \n",
      "25                      0.974068           0.000309             0.968028   \n",
      "26                      0.970196           0.000325             0.963923   \n",
      "27                      0.966341           0.000342             0.959872   \n",
      "28                      0.962484           0.000340             0.955810   \n",
      "29                      0.958754           0.000382             0.951836   \n",
      "...                          ...                ...                  ...   \n",
      "877                     0.623963           0.004968             0.487893   \n",
      "878                     0.623930           0.004988             0.487735   \n",
      "879                     0.623898           0.005003             0.487592   \n",
      "880                     0.623852           0.005025             0.487455   \n",
      "881                     0.623830           0.005025             0.487325   \n",
      "882                     0.623818           0.005037             0.487187   \n",
      "883                     0.623842           0.005026             0.487040   \n",
      "884                     0.623813           0.005006             0.486902   \n",
      "885                     0.623796           0.005008             0.486776   \n",
      "886                     0.623770           0.005008             0.486630   \n",
      "887                     0.623744           0.004985             0.486502   \n",
      "888                     0.623750           0.004994             0.486367   \n",
      "889                     0.623743           0.004977             0.486245   \n",
      "890                     0.623736           0.004977             0.486094   \n",
      "891                     0.623731           0.004970             0.485950   \n",
      "892                     0.623738           0.004970             0.485815   \n",
      "893                     0.623705           0.004952             0.485652   \n",
      "894                     0.623689           0.004967             0.485521   \n",
      "895                     0.623678           0.004995             0.485397   \n",
      "896                     0.623672           0.004971             0.485265   \n",
      "897                     0.623648           0.004961             0.485131   \n",
      "898                     0.623630           0.004964             0.484993   \n",
      "899                     0.623614           0.004937             0.484843   \n",
      "900                     0.623595           0.004920             0.484696   \n",
      "901                     0.623585           0.004905             0.484583   \n",
      "902                     0.623577           0.004889             0.484449   \n",
      "903                     0.623565           0.004894             0.484284   \n",
      "904                     0.623570           0.004899             0.484151   \n",
      "905                     0.623545           0.004901             0.484020   \n",
      "906                     0.623524           0.004902             0.483870   \n",
      "\n",
      "              train-mlogloss-std  \n",
      "n_estimators                      \n",
      "0                       0.000119  \n",
      "1                       0.000141  \n",
      "2                       0.000135  \n",
      "3                       0.000141  \n",
      "4                       0.000103  \n",
      "5                       0.000022  \n",
      "6                       0.000055  \n",
      "7                       0.000132  \n",
      "8                       0.000163  \n",
      "9                       0.000126  \n",
      "10                      0.000187  \n",
      "11                      0.000235  \n",
      "12                      0.000226  \n",
      "13                      0.000287  \n",
      "14                      0.000301  \n",
      "15                      0.000240  \n",
      "16                      0.000197  \n",
      "17                      0.000171  \n",
      "18                      0.000217  \n",
      "19                      0.000289  \n",
      "20                      0.000342  \n",
      "21                      0.000331  \n",
      "22                      0.000360  \n",
      "23                      0.000360  \n",
      "24                      0.000368  \n",
      "25                      0.000390  \n",
      "26                      0.000417  \n",
      "27                      0.000402  \n",
      "28                      0.000390  \n",
      "29                      0.000410  \n",
      "...                          ...  \n",
      "877                     0.001974  \n",
      "878                     0.001981  \n",
      "879                     0.001984  \n",
      "880                     0.001968  \n",
      "881                     0.002001  \n",
      "882                     0.001996  \n",
      "883                     0.002006  \n",
      "884                     0.002024  \n",
      "885                     0.002009  \n",
      "886                     0.002008  \n",
      "887                     0.002010  \n",
      "888                     0.001996  \n",
      "889                     0.001974  \n",
      "890                     0.001963  \n",
      "891                     0.001941  \n",
      "892                     0.001958  \n",
      "893                     0.001960  \n",
      "894                     0.001939  \n",
      "895                     0.001945  \n",
      "896                     0.001941  \n",
      "897                     0.001932  \n",
      "898                     0.001942  \n",
      "899                     0.001951  \n",
      "900                     0.001964  \n",
      "901                     0.001957  \n",
      "902                     0.001958  \n",
      "903                     0.001962  \n",
      "904                     0.001947  \n",
      "905                     0.001953  \n",
      "906                     0.001981  \n",
      "\n",
      "[907 rows x 4 columns]\n"
     ]
    }
   ],
   "source": [
    "cvresult2_1 = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "print xgb4\n",
    "print cvresult2_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nqaSkICIilf4fGyqVc1A7qjQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa797edb50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_means = cvresult2_1['test-mlogloss-mean']\n",
    "test_stds = cvresult2_1['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult2_1['train-mlogloss-mean']\n",
    "train_stds = cvresult2_1['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(0, cvresult2_1.shape[0])\n",
    "        \n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators4_1.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nmBAFAAD0rtdu1a3uMriaBkyIAgAA+mehbtXmq5Nj999xXykrV1OfCVEAAMBgrdvr5sFqjN1ivznt\nBQAADMlJREFU2AUAAACMEyEKAACgC0IUAABAF4QoAACALghRAAAAXRCiAAAAuiBEAQAAdEGIAgAA\n6IIQBQAA0AUhCgAAoAtCFAAAQBeEKAAAgC4IUQAAAF0QogAAALogRAEAAHRBiAIAAOiCEAUAANAF\nIQoAAKALQhQAAEAXhCgAAIAuCFEAAABdEKIAAAC6IEQBAAB0QYgCAADoghAFAADQBSEKAACgC0IU\nAABAF4QoAACALghRAAAAXRCiAAAAuiBEAQAAdEGIAgAA6IIQBQAA0IVVwy5gWDZt2jTsEgAAgCHq\nNROUWmufSxltpZTbJ7lk2HUAAAAj4w611kubHjyNIaok2TfJL4ZdS9vuaYW6O2R0amI6uPcYFvce\nw+LeY1jce6Nt9ySX1S6C0dQN52v/j9M4ZQ5aK9MlSX5RazXGkBXj3mNY3HsMi3uPYXHvjbyu/5mY\nWAIAAKALQhQAAEAXhKjh25rk9e2fsJLcewyLe49hce8xLO69CTN1E0sAAAAsh04UAABAF4QoAACA\nLghRAAAAXRCiAAAAuiBE9Vkp5chSyrdKKb8opVxVSvlUKeWAecesLqW8s5RyTSnl+lLKp0spd5h3\nzH6llM+0P7+mlHJiKWVmZX8bxln7XqyllOM79rn3GIhSyu1LKR8upfyslHJDKeU7pZSDOz4vpZSj\nSymXlVJuLKV8uZRyn3nXuFUp5UOllI3t5UOllD1W/rdhXJRSVpVSjiml/Lh9X/13KeWoUsotOo5x\n79EXpZRHt/98vKz95+vvzvu8L/daKeV+pZT/aF/j0vY9XcJIEaL67zeSvDvJw5IclmRVklNKKWs7\njjk+ye8leXqSRyZZl+SzpZRdkqT983NJ1rY/f3qS30/y9hX6HRhzpZQHJ3l+knPmfeTeo+9KKbdK\nckaSm5L8VpJ7J3lZkus6DvurJC9N8qIkD05yRZJTSym7dxzz0SQHJfnN9nJQkg8Nun7G2iuS/Gla\n99W90rrPXp7kLzqOce/RL2uTfDete2khy77XSinrk5ya5LL2Nf4iyRHt6zJKaq2WAS5J9kpSkzy6\nvb0hybYkT+s4Zt8kv0ryxPb2b7W39+045ulJtiRZP+zfyTLaS1rB6IdJHp/ky0mOb+9371kGsiR5\nS5KvLvF5SXJ5kld07FudVsh6QXv7Xu3/r3xoxzEPa+87YNi/o2U0lySfTfIP8/b9W5IPtdfde5aB\nLO3743c7tvtyryV5Yfuc1R3HvDLJpWm/msgyGotO1OBtaP+8tv3z4CS3THLK7AG11suSfC/JIe1d\nD0/yvfb+WSen9S/jwYGlvTvJ52qtX5i3373HoPxOkjNLKf/aHsZ8dinleR2f3yXJ7bLjvbc1yX9k\nx3tvY631mx3HfCPJxo5jYL7TkxxaSrlHkpRS7p9WF/3z7c/de6yUft1rD0/yH+1zZ52c1l963nlQ\nxdO9VcMuYJK1x68el+T0Wuv32rtvl2RbrfXn8w6/sv3Z7DFXdn5Ya/15KWVbxzFwM6WUpyd5YFpD\nAOZz7zEod03rb0+PS/KmJA9JcmIpZWut9YOZu3eunHfelUnu1F6/XZKrFrj2VXHvsbi3pvWXlT8o\npfwqyS5JXl1r/Zf25+49Vkq/7rXbJblogWvMfvbjZVVJ3whRg/WuJAem9bdiO1PSaufOqg2Oge1K\nKXdMckKSJ9Rat3Rzatx7LM8tkpxZa31Ve/vs9sPUL0zywY7j5t9D7j2W62lJnpXkGUm+n9bzJceX\nUi6rtf5zx3HuPVZKP+61ha6x2LkMieF8A1JKeWdaQ1weW2u9pOOjK5LMtB/E7rR35v6m4YrM+9uv\n9vG3zM3/hgNmHZzWfXRWKeWXpZRfpjXRyYvb61fGvcdgXJ7kvHn7zk+yX3v9ivbP+X+rP//eu+0C\n194r7j0W97Ykb6m1fqzWem6t9UNJ3pHkyPbn7j1WSr/utZv9Ody+RuJ+HClCVJ+1p7d8V5KnJHlc\nrXV+2/WstGawOqzjnH2S3DfJ19q7vp7kvu39s56QZGv7fFjIaUnul9bfxM4uZyb5SMe6e49BOCPJ\nAfP23SPJxe31H6f1Hwad995MWiG/897bUEp5SMcxD01rqNbsMTDfmiS/nrfvV5n77xv3HiulX/fa\n15M8et6rRZ6Q1mx9Fw2qeHow7JktJm1J8rdpzaryG2n9TcLsslvHMe9J8tMkhyZ5QFr/8fudJLu0\nP98lyblJvtD+/ND28e8c9u9nGa8lHbPztbfde5a+L2k9g3dTklcl2T+toVXXJ3lmxzGvaP9/4++l\nFdw/mtZ/FOzeccxJaU0f/LD2ck6Szwz797OM7pLkA0kuSfKktB66/70kVyd5a8cx7j1LX5a0Zr+d\n/UvKmuR/tdf3a3++7HstrUB1Rfvc+7avtTHJy4b9+1vm3Q/DLmDSlva/VAstz+k4Ztck70zysyQ3\nJPlMkjvOu85+aU3dekP7uHemY7pLi6XJskCIcu9ZBrIk+e12AN+S1lC+5837vCQ5Oq2hf1vSmrHq\nvvOOuXWSDyfZ1F4+nGSPYf9ultFdkuye1vvvLk5yY5IfJTkmyUzHMe49S1+WJI9Z5L/xPtD+vC/3\nWlqjSr7SvsblSV4X05uP3FLa/7AAAABowDNRAAAAXRCiAAAAuiBEAQAAdEGIAgAA6IIQBQAA0AUh\nCgAAoAtCFAAAQBeEKAAAgC4IUQBMrFLKRaWUlwy7DgAmixAFwNgrpTynlHLdAh89OMn7VuD7hTWA\nKbJq2AUAwKDUWq8edg3dKKXM1Fq3DbsOAJamEwVA35RSvlxKObGU8jellGtLKVeUUo5ueO6GUsr7\nSilXlVI2lVK+WEq5f8fn9y+lfKmU8ov252eVUh5USnlMkn9KsqGUUtvL0e1zdugQtT97QSnls6WU\nG0op55dSHl5K2b9d+/WllK+XUu7Wcc7dSin/p5RyZSllcynlW6WUx3f+zknulOQds9/f8dnvl1K+\nX0rZ2q7lZfN+54tKKa8ppXyglLIxyd+XUmZKKe8qpVxeStnSPubIrv5BADBQQhQA/fZHSa5P8tAk\nf5XkqFLKYUudUEopST6X5HZJDk9ycJJvJzmtlHLr9mEfSXJJWkP0Dk7yliQ3Jflakpck2ZRkn/Zy\n7BJf99okH0xyUJIfJPlokr9L8uYkD2of866O49cl+XySxyd5QJKTk3ymlLJf+/OntOs6quP7U0o5\nOMknknwsyf2SHJ3kjaWU58yr5+VJvtf+nd6Y5MVJfifJU5MckORZSS5a4vcBYIUZzgdAv51Ta319\ne/2CUsqLkhya5NQlznlsWkFj71rr1va+I0opv5vkD9J6rmm/JG+rtf5g9tqzJ7e7OLXWekWD+v6p\n1vqJ9nlvTfL1JG+stZ7c3ndCWp2tpHXR7yb5bsf5ryml/F5aQeddtdZrSym/SvKLed//0iSn1Vrf\n2N7+YSnl3mmFpg90HPfFWuv20NcOZxckOb3WWpNc3OB3AmAF6UQB0G/nzNu+PMneOznn4LQ6Pj9r\nD5nbXErZnOQuSWaH1h2X5P2llC+UUl7ZOeRuGfVd2f557rx9u5ZS1idJKWVte3jieaWU69p13TOt\nULeUeyU5Y96+M5LcvZSyS8e+M+cd84G0umT/1R4a+YSd/kYArCghCoB+u2neds3O/7y5RVph66B5\nywFJ3pYktdajk9wnrWF/j0tyXrsjtJz66hL7Zmt+W5LfT/LqJI9q13VukpmdfE/puFbnvvmu79yo\ntX47rfD42iS7JflEKeV/7+S7AFhBhvMBMAq+ndbzUL+stV602EG11h8m+WFakzj8S5L/meSTSbYl\n2WWx85bpUUk+UGv9ZJKUUtYlufO8Yxb6/vOSPHLevkOS/LDW+qulvrDWuinJx5N8vB2g/m8p5da1\n1mt7+xUA6CedKABGwRfSejbpU6WUJ5ZS7lxKOaSUckx7Br7d2jPWPaaUcqdSyiPSmmDi/Pb5FyVZ\nV0o5tJSyZyllTR9ruzDJU0opB7VnC/xobv7n50VJHl1KuX0pZc/2vrcnObSU8tpSyj1KKX+U5EVZ\netKLlFL+Vynl6aWUe5ZS7pHkD5NckWSh92ABMARCFABD155A4fAkX0nyj2l1mz6WVsfnyiS/SnKb\ntGbV+2Fas96dlOR17fO/luS9aXVvrk5rVsB++V9Jfp7WLICfSWt2vm/PO+aodq0/an//7LC8pyZ5\nelqz770hyVG11g/s5Ps2J3lFWs9Kfat93cNrrb9e9m8CQF+U1p9bAAAANKETBQAA0AUhCoCBK6U8\ns3Pq8nnL94ddHwB0w3A+AAaulLJ7ktsu8vFNtVYvlAVgbAhRAAAAXTCcDwAAoAtCFAAAQBeEKAAA\ngC4IUQAAAF0QogAAALogRAEAAHRBiAIAAOjC/wM2Gt3lOeYRZwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7faa79bff0d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult2 = cvresult2_1.iloc[20:]\n",
    "# plot\n",
    "test_means = cvresult2['test-mlogloss-mean']\n",
    "test_stds = cvresult2['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult2['train-mlogloss-mean']\n",
    "train_stds = cvresult2['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(200,cvresult2.shape[0]+200)\n",
    "fig = plt.figure(figsize=(10, 10), dpi=100)\n",
    "plt.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "plt.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "plt.xlabel( 'n_estimators' )\n",
    "plt.ylabel( 'Log Loss' )\n",
    "plt.savefig( 'n_estimators_detail.png' )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "xgb5 = XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.05, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=2000,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "modelfit(xgb4, X_train, y_train, cv_folds = kfold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
      "       colsample_bytree=0.8, gamma=0, learning_rate=0.05, max_delta_step=0,\n",
      "       max_depth=5, min_child_weight=1, missing=None, n_estimators=2000,\n",
      "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
      "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3,\n",
      "       silent=True, subsample=0.3)\n",
      "              test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "n_estimators                                                               \n",
      "0                       1.092807           0.000136             1.092591   \n",
      "1                       1.087142           0.000147             1.086710   \n",
      "2                       1.081575           0.000117             1.080913   \n",
      "3                       1.076051           0.000131             1.075136   \n",
      "4                       1.070697           0.000129             1.069460   \n",
      "5                       1.065312           0.000076             1.063879   \n",
      "6                       1.060108           0.000155             1.058475   \n",
      "7                       1.054980           0.000153             1.053080   \n",
      "8                       1.049955           0.000133             1.047823   \n",
      "9                       1.044996           0.000151             1.042601   \n",
      "10                      1.040066           0.000215             1.037459   \n",
      "11                      1.035195           0.000248             1.032386   \n",
      "12                      1.030406           0.000243             1.027320   \n",
      "13                      1.025684           0.000315             1.022381   \n",
      "14                      1.021013           0.000340             1.017461   \n",
      "15                      1.016409           0.000265             1.012618   \n",
      "16                      1.011964           0.000231             1.007970   \n",
      "17                      1.007564           0.000252             1.003368   \n",
      "18                      1.003135           0.000266             0.998672   \n",
      "19                      0.998846           0.000302             0.994110   \n",
      "20                      0.994573           0.000335             0.989610   \n",
      "21                      0.990377           0.000261             0.985194   \n",
      "22                      0.986251           0.000292             0.980822   \n",
      "23                      0.982097           0.000306             0.976458   \n",
      "24                      0.978043           0.000300             0.972206   \n",
      "25                      0.974068           0.000309             0.968028   \n",
      "26                      0.970196           0.000325             0.963923   \n",
      "27                      0.966341           0.000342             0.959872   \n",
      "28                      0.962484           0.000340             0.955810   \n",
      "29                      0.958754           0.000382             0.951836   \n",
      "...                          ...                ...                  ...   \n",
      "877                     0.623963           0.004968             0.487893   \n",
      "878                     0.623930           0.004988             0.487735   \n",
      "879                     0.623898           0.005003             0.487592   \n",
      "880                     0.623852           0.005025             0.487455   \n",
      "881                     0.623830           0.005025             0.487325   \n",
      "882                     0.623818           0.005037             0.487187   \n",
      "883                     0.623842           0.005026             0.487040   \n",
      "884                     0.623813           0.005006             0.486902   \n",
      "885                     0.623796           0.005008             0.486776   \n",
      "886                     0.623770           0.005008             0.486630   \n",
      "887                     0.623744           0.004985             0.486502   \n",
      "888                     0.623750           0.004994             0.486367   \n",
      "889                     0.623743           0.004977             0.486245   \n",
      "890                     0.623736           0.004977             0.486094   \n",
      "891                     0.623731           0.004970             0.485950   \n",
      "892                     0.623738           0.004970             0.485815   \n",
      "893                     0.623705           0.004952             0.485652   \n",
      "894                     0.623689           0.004967             0.485521   \n",
      "895                     0.623678           0.004995             0.485397   \n",
      "896                     0.623672           0.004971             0.485265   \n",
      "897                     0.623648           0.004961             0.485131   \n",
      "898                     0.623630           0.004964             0.484993   \n",
      "899                     0.623614           0.004937             0.484843   \n",
      "900                     0.623595           0.004920             0.484696   \n",
      "901                     0.623585           0.004905             0.484583   \n",
      "902                     0.623577           0.004889             0.484449   \n",
      "903                     0.623565           0.004894             0.484284   \n",
      "904                     0.623570           0.004899             0.484151   \n",
      "905                     0.623545           0.004901             0.484020   \n",
      "906                     0.623524           0.004902             0.483870   \n",
      "\n",
      "              train-mlogloss-std  \n",
      "n_estimators                      \n",
      "0                       0.000119  \n",
      "1                       0.000141  \n",
      "2                       0.000135  \n",
      "3                       0.000141  \n",
      "4                       0.000103  \n",
      "5                       0.000022  \n",
      "6                       0.000055  \n",
      "7                       0.000132  \n",
      "8                       0.000163  \n",
      "9                       0.000126  \n",
      "10                      0.000187  \n",
      "11                      0.000235  \n",
      "12                      0.000226  \n",
      "13                      0.000287  \n",
      "14                      0.000301  \n",
      "15                      0.000240  \n",
      "16                      0.000197  \n",
      "17                      0.000171  \n",
      "18                      0.000217  \n",
      "19                      0.000289  \n",
      "20                      0.000342  \n",
      "21                      0.000331  \n",
      "22                      0.000360  \n",
      "23                      0.000360  \n",
      "24                      0.000368  \n",
      "25                      0.000390  \n",
      "26                      0.000417  \n",
      "27                      0.000402  \n",
      "28                      0.000390  \n",
      "29                      0.000410  \n",
      "...                          ...  \n",
      "877                     0.001974  \n",
      "878                     0.001981  \n",
      "879                     0.001984  \n",
      "880                     0.001968  \n",
      "881                     0.002001  \n",
      "882                     0.001996  \n",
      "883                     0.002006  \n",
      "884                     0.002024  \n",
      "885                     0.002009  \n",
      "886                     0.002008  \n",
      "887                     0.002010  \n",
      "888                     0.001996  \n",
      "889                     0.001974  \n",
      "890                     0.001963  \n",
      "891                     0.001941  \n",
      "892                     0.001958  \n",
      "893                     0.001960  \n",
      "894                     0.001939  \n",
      "895                     0.001945  \n",
      "896                     0.001941  \n",
      "897                     0.001932  \n",
      "898                     0.001942  \n",
      "899                     0.001951  \n",
      "900                     0.001964  \n",
      "901                     0.001957  \n",
      "902                     0.001958  \n",
      "903                     0.001962  \n",
      "904                     0.001947  \n",
      "905                     0.001953  \n",
      "906                     0.001981  \n",
      "\n",
      "[907 rows x 4 columns]\n"
     ]
    }
   ],
   "source": [
    "cvresult2_2 = pd.DataFrame.from_csv('1_nestimators.csv')\n",
    "print xgb5\n",
    "print cvresult2_2\n",
    "# print cvresult2_2[\"test-mlogloss-mean\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 当降低学习率时，树的数目提高到906收敛，且学习率0.05和0.01的结果一致，此最佳性能时的logloss为0.623524，比0.1时的学习率有所提高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GridSearchCV(cv=StratifiedKFold(n_splits=4, random_state=1, shuffle=True),\n",
       "       error_score='raise',\n",
       "       estimator=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
       "       colsample_bytree=0.8, gamma=0, learning_rate=0.05, max_delta_step=0,\n",
       "       max_depth=5, min_child_weight=1, missing=None, n_estimators=906,\n",
       "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
       "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3,\n",
       "       silent=True, subsample=0.3),\n",
       "       fit_params=None, iid=True, n_jobs=-1,\n",
       "       param_grid={'subsample': [0.6, 0.7, 0.8, 0.9], 'colsample_bytree': [0.6, 0.7, 0.8, 0.9]},\n",
       "       pre_dispatch='2*n_jobs', refit=True, return_train_score=True,\n",
       "       scoring='neg_log_loss', verbose=0)"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#行列重采样参数调整\n",
    "param_test4 = {\n",
    " 'subsample':[i/10.0 for i in range(6,10)],\n",
    " 'colsample_bytree':[i/10.0 for i in range(6,10)]\n",
    "}\n",
    "xgb6=XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=0.7,\n",
    "       colsample_bytree=0.8, gamma=0, learning_rate=0.05, max_delta_step=0,\n",
    "       max_depth=5, min_child_weight=1, missing=None, n_estimators=906,\n",
    "       n_jobs=1, nthread=None, objective='multi:softprob', random_state=0,\n",
    "       reg_alpha=0.01, reg_lambda=2, scale_pos_weight=1, seed=3, silent=True,\n",
    "       subsample=0.3)\n",
    "gsearch4 = GridSearchCV(xgb6, param_grid = param_test4, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch4.fit(X_train , y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grid_scores-------------->\n",
      "[mean: -0.64339, std: 0.00676, params: {'subsample': 0.6, 'colsample_bytree': 0.6}, mean: -0.64218, std: 0.00736, params: {'subsample': 0.7, 'colsample_bytree': 0.6}, mean: -0.63969, std: 0.00790, params: {'subsample': 0.8, 'colsample_bytree': 0.6}, mean: -0.63380, std: 0.00970, params: {'subsample': 0.9, 'colsample_bytree': 0.6}, mean: -0.64380, std: 0.00638, params: {'subsample': 0.6, 'colsample_bytree': 0.7}, mean: -0.64275, std: 0.00508, params: {'subsample': 0.7, 'colsample_bytree': 0.7}, mean: -0.63958, std: 0.00695, params: {'subsample': 0.8, 'colsample_bytree': 0.7}, mean: -0.63570, std: 0.00768, params: {'subsample': 0.9, 'colsample_bytree': 0.7}, mean: -0.64773, std: 0.00741, params: {'subsample': 0.6, 'colsample_bytree': 0.8}, mean: -0.64594, std: 0.00747, params: {'subsample': 0.7, 'colsample_bytree': 0.8}, mean: -0.64207, std: 0.00906, params: {'subsample': 0.8, 'colsample_bytree': 0.8}, mean: -0.63733, std: 0.00621, params: {'subsample': 0.9, 'colsample_bytree': 0.8}, mean: -0.64795, std: 0.00655, params: {'subsample': 0.6, 'colsample_bytree': 0.9}, mean: -0.64518, std: 0.00790, params: {'subsample': 0.7, 'colsample_bytree': 0.9}, mean: -0.64514, std: 0.00766, params: {'subsample': 0.8, 'colsample_bytree': 0.9}, mean: -0.63867, std: 0.00616, params: {'subsample': 0.9, 'colsample_bytree': 0.9}]\n",
      "best_params-------------->\n",
      "{'subsample': 0.9, 'colsample_bytree': 0.6}\n",
      "best_score--------------->\n",
      "-0.6338031958198537\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/model_selection/_search.py:747: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "print \"grid_scores-------------->\"\n",
    "print gsearch4.grid_scores_\n",
    "print \"best_params-------------->\"\n",
    "print gsearch4.best_params_\n",
    "print \"best_score--------------->\"\n",
    "print gsearch4.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 当对行列重采样参数调整后，最佳参数为{'subsample': 0.9, 'colsample_bytree': 0.6}，最佳分数为0.6338031958198537，发现并没有对性能进行提高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集准确率： 0.7896656534954407\n",
      "测试集准确率： 0.7273694341725343\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "#当树为103棵，未重新定义树的棵树时的模型最佳情况\n",
    "#gsearch3_4.fit(X_train, y_train)\n",
    "y_train_p = gsearch3_4.predict(X_train)\n",
    "y_test_p = gsearch3_4.predict(X_test)\n",
    "\n",
    "print '训练集准确率：',accuracy_score(y_train, y_train_p)\n",
    "print '测试集准确率：',accuracy_score(y_test, y_test_p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集准确率： 0.9892603850050659\n",
      "测试集准确率： 0.7196190669165696\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "#当树为906棵，重新定义树的棵树时的模型最佳情况\n",
    "xgb5.fit(X_train , y_train,eval_metric='mlogloss')\n",
    "y_train_p = xgb5.predict(X_train)\n",
    "y_test_p = xgb5.predict(X_test)\n",
    "\n",
    "print '训练集准确率：',accuracy_score(y_train, y_train_p)\n",
    "print '测试集准确率：',accuracy_score(y_test, y_test_p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集准确率： 0.925531914893617\n",
      "测试集准确率： 0.7295729699609949\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "#当树为906棵，且行列重采样参数调整最佳情况\n",
    "y_train_p = gsearch4.predict(X_train)\n",
    "y_test_p = gsearch4.predict(X_test)\n",
    "\n",
    "print '训练集准确率：',accuracy_score(y_train, y_train_p)\n",
    "print '测试集准确率：',accuracy_score(y_test, y_test_p)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 比较上述的几种模型得出，当树的棵树增加时训练集准确率有显著提高，但是测试集反而下降，出现过拟合现象；在增加树的棵树后行列重采样参数调整，相对于之前测试准确率比之前提高，与未增加树数目时差不多．因此决定选择当树为103棵，未重新定义树的棵树时的最佳模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/yan/anaconda2/lib/python2.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    }
   ],
   "source": [
    "#选用当树为103棵，未重新定义树的棵树时的模型最佳情况生成测试结果文件\n",
    "y_pred = pd.DataFrame(y_test_p,index=X_test.index,columns=['interest_level'])\n",
    "test_result = pd.concat([X_test,y_test,y_pred],axis=1)\n",
    "test_result.to_csv('yys_RentListingInquries_FE_trian_result.csv')\n",
    "#生成未统计兴趣等级待预测的数据的结果文件\n",
    "y_test_p2 = gsearch3_4.predict(test)\n",
    "y_pred2 = pd.DataFrame(y_test_p2,index=test.index,columns=['interest_level'])\n",
    "test_result = pd.concat([test,y_pred2],axis=1)\n",
    "test_result.to_csv('yys_RentListingInquries_FE_test_result.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
